Re: function returning two values
On Aug 13, 1:09 pm, Ian Collins <ian-n...@hotmail.com> wrote:
std::vector<int>::size_type occurs;
.......[SNIP].............
find_val(begin, end, find_value, occurs);
..............[SNIP]................
Just add it!
added, it compiles and runs and i modified last 2 lines of main() to
print the output to terminal but still no luck :(
/* C++ Primer - 4/e
*
* 1st example from section 7.2.2, page 234
* returning 2 values from a function
*
* STATEMENT:
* to find a specific value in a vector and number of times
* that value occurs in th vector.
*/
#include <iostream>
#include <vector>
/* returns an iterator that refers to the first occurence of
"find_this_value"
the reference paramater "occurs" contains a second return value, the
number of times "find_this_value" occured in the vector
*/
std::vector<int>::const_iterator find_val(
std::vector<int>::const_iterator beg,
std::vector<int>::const_iterator end,
int find_this_value,
std::vector<int>::size_type& occurs)
{
/* res_iter will hold the first occurence, if any */
std::vector<int>::const_iterator res_iter = end;
occurs = 0;
for( ; beg != end; ++beg)
{
if ( *beg == find_this_value )
{
if ( res_iter == end ) /* this will remeber the 1st occurence */
{
res_iter = beg;
}
++occurs;
}
}
return res_iter;
}
int main()
{
std::cout << "enter some numbers to creat a vector : ";
std::vector<int> ivec;
int i;
while(std::cin >> i)
{
ivec.push_back(i);
}
/* clear the input stream */
std::cin.clear();
std::cout << "which numbe you want to find: ";
int find_value;
std::cin >> find_value;
std::vector<int>::const_iterator begin = ivec.begin();
std::vector<int>::const_iterator end = ivec.end();
/* a temperaory variable for 4th classic write argument */
std::vector<int>::size_type write_temp = 0;
std::cout << "---------------------------\n";
find_val(begin, end, find_value, write_temp);
std::cout << std::endl;
return 0;
}