一個(gè)函數(shù)只能有一個(gè)返回值,但如果我想讓他返回更多的信息怎么辦呢?這種情況可以使用引用形參。
因?yàn)橐眯螀⒃诤瘮?shù)調(diào)用后是可以修改實(shí)參值的,所以就相當(dāng)與函數(shù)的返回值。
下面的代碼演示了一個(gè)帶有一個(gè)返回值,并通過引用形參向主調(diào)函數(shù)返回信息的函數(shù)。這個(gè)函數(shù)的功能是找出在容器中某一個(gè)數(shù)值出現(xiàn)的次數(shù),并返回該數(shù)值第一次出現(xiàn)的迭代器。
//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);
}
//存儲(chǔ)值出現(xiàn)的次數(shù)
vector<int>::size_type ccurs;
//調(diào)用函數(shù)
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)
{
//這個(gè)if語句的作用是讓res_iter等于值第一次出現(xiàn)的位置
if(res_iter==end)
{
res_iter=beg;
}
occurs++;
}
}
return res_iter;
}