一個函數只能有一個返回值,但如果我想讓他返回更多的信息怎么辦呢?這種情況可以使用引用形參。
因為引用形參在函數調用后是可以修改實參值的,所以就相當與函數的返回值。
下面的代碼演示了一個帶有一個返回值,并通過引用形參向主調函數返回信息的函數。這個函數的功能是找出在容器中某一個數值出現的次數,并返回該數值第一次出現的迭代器。
//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;
}