vector中find 的用法

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

 

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值