function returning two values
/* 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();
find_val(begin, end, find_value);
return 0;
}
as expected this function never compiles because function call expects
the 4 arguments whereas 3 are given. but how i am supposed to provide
4th argument when what i want to find out is the 4th argument and the
author says that 4th argument is the 2nd return value. i am confused
on this
(BTW, it seems like circular-dependencies problem of emerge)