您的位置:首页 > 其它

vector中find 的用法

2013-09-05 09:10 302 查看
vector没有自带的find函数,需要用普通的find函数,使用如下:

vector<string> nameList1;
//给nameList1赋值
string name;
if(find(nameList1.begin(),nameList1.end(),name) == nameList1.end()){
//没有找到
}
else{
//找到了
}


如果找到一个vector中有、一个vector中没有的元素,如何会快速一点。下面找出nameList2中有的,nameList1中没有的元素。
vector<string> nameList1;
vector<string> nameList2;
vector<string> nameList;
//给nameList1、2赋值 省略
vector<string>::iterator itit1;
vector<string>::iterator itit2;

//for(int i=0;i<nameList2.size();i++){
for(itit2 = nameList2.begin();itit2<nameList2.end();itit2++){
//string name = nameList2.at(i);
string name = *itit2;
itit1 = find(nameList1.begin(),nameList1.end(),name);
if( !(itit1 == nameList1.end())){
//找到了
//nameList2.erase(itit2);注意此处不能erase,不然会导致itit2失效,itit2++时会出错
nameList1.erase(itit1);
}else{
//没有找到
nameList.push_back(name);
}
}


最后nameList中的即为所求得的结果。
这样将在nameList1和nameList2中共同出现的元素每次找出时将nameList1中的去掉,这样可以缩小搜索的范围,提高检索速度,尤其是当数据量很大的情况下。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: