c++ primer 4th 中,在“使用引用形参返回额外的信息”那块有个例程,我在上机实验时却总出现编译时错误(出错的句子已用注释标出),望高手给指点下。
原题:
定义一个find_val函数,在一个整形vector对象的元素中搜索某个特定值。如果找到满足要求的元素,则返回指向该元素的迭代器,否则返回一个迭代器,指向该vector对象的end操作返回的元素。此外,如果该值出现了不止一次,我们还希望函数可以返回其出现的次数。
/*
Name: find_val
Copyright:
Author:
Date: 11-10-07 13:34
Description: c++ primer 4th p203 no.7.2.2.1
*/
#include <iostream>
#include <vector> //vector
using namespace std;
vector<int>::const_iterator find_val(
vector<int>::const_iterator beg,
vector<int>::const_iterator end,
int value,
vector<int>::size_type &occurs)
{
// res_iter will hold first occurrence, if any
vector<int>::const_iterator res_iter=end;
occurs=0;
for( ; beg!=end; ++beg)
if(*beg==value)
{
if(res_iter==end)
res_iter=beg;
++occurs;
}
return res_iter;
}
int main()
{
int n,fv;
vector<int>::size_type count=0;
vector<int>::iterator iter;
vector<int> text;
while(cin>>n)
text.push_back(n);
cout<<"输入要查找的数"<<endl;
cin>>fv;
iter=find_val(text.begin(), text.end(), fv,count); //编译器提示这里出错
cout<<*iter<<endl;
cout<<count<<endl;
system("pause");
return 0;
}
就一块钱了(1RMB==40min),网吧上网,在线等,走过路过的都帮个忙吧。
[此贴子已经被作者于2007-10-11 15:07:11编辑过]