vector中find 的用法

来源:互联网 发布:站内优化和站外优化 编辑:程序博客网 时间:2024/05/22 14:34

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中的去掉,这样可以缩小搜索的范围,提高检索速度,尤其是当数据量很大的情况下。