用迭代器查找的问题
#include<string>#include<vector>#include<iostream>#include<list>/**编写一个函数,其形参是一对迭代器和一个int型数值。*实现在迭代器标记的范围内寻找该int型数值的功能,并返回一个bool的结果*以指明是否找到指定数据。*/using namespace std;bool findtarget(int number,vector<int>::iterator itera1,vector<int>::iterator itera2)//用来寻找在两个迭代器范围内的数{ bool bvalue=false; while(itera1!=itera2)//while循环不执行直接跳过去了,原因是itera1==itera2.为什么? { cout<<"YES"<<endl; if(*itera1==number) { cout<<"YES"<<endl; bvalue=true; break; } else ++itera1; } return bvalue;}void main(){ int temp; int target; vector<int> ivec; //list<int> ilist; //vector<int>::iterator iter2=ivec.end(); while(cin>>temp,cin.eof())//这个我想联系一下错误处理的。 { if(cin.bad()) throw runtime_error("IO stream corrupted"); if(cin.fail()) { cerr<<"bad data,try again"; cin.clear(); cin.sync(); continue; } if(temp==-1) break; ivec.push_back(temp); } cout<<"Please input your target:"<<endl; cin.clear();//这里应该结合使用 cin.sync(); // cin>>target;//要查找的数 vector<int>::iterator iter1=ivec.begin(); vector<int>::iterator iter2=ivec.end(); cout<<"The result of the function is:"<<endl; cout<<findtarget(target,ivec,iter1,iter2)<<endl;//调用函数 }