Re: function returning two values
i changed code to this:
/* 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::endl;
return 0;
}
========== OUTPUT ===========
~/programming/cpp $ g++ -ansi -pedantic -Wall -Wextra 7.2.2_return-two-
values.cpp
~/programming/cpp $ ./a.out
enter some numbers to creat a vector : 1 2 3 4 5 5 0 2 3 2 5 9
which numbe you want to find: 2
---------------------------
2
~/programming/cpp $ ./a.out
enter some numbers to creat a vector : 1 2 20 9 8 0 6 20 20 98
which numbe you want to find: 20
---------------------------
20
~/programming/cpp $
WHAT IS THIS ?