一个函数只能有一个返回值,但如果我想让他返回更多的信息怎么办呢?这种情况可以使用引用形参。
因为引用形参在函数调用后是可以修改实参值的,所以就相当与函数的返回值。
下面的代码演示了一个带有一个返回值,并通过引用形参向主调函数返回信息的函数。这个函数的功能是找出在容器中某一个数值出现的次数,并返回该数值第一次出现的迭代器。
//liujiajia
//2008-7-14
#include<iostream>
#include<vector>
using namespace std;
vector<int>::const_iterator find_val(vector<int>::const_iterator,vector<int>::const_iterator,int,vector<int>::size_type &);
int main(void)
{
vector<int> some;
int val;
//使用push_back()输入容器中的值
while(cin>>val)
{
some.push_back(val);
}
//存储值出现的次数
vector<int>::size_type ccurs;
//调用函数
vector<int>::const_iterator it=find_val(some.begin(),some.end(),8,ccurs);
cout<<ccurs<<endl;
getchar();
}
vector<int>::const_iterator find_val(
vector<int>::const_iterator beg,
vector<int>::const_iterator end,
int value,
vector<int>::size_type &occurs)
{
vector<int>::const_iterator res_iter=end;
occurs=0;
for(;beg!=end;++beg)
{
if(*beg==value)
{
//这个if语句的作用是让res_iter等于值第一次出现的位置
if(res_iter==end)
{
res_iter=beg;
}
occurs++;
}
}
return res_iter;
}