C++ STL 查找多个结果

使用find_if()函数查找到第一个符合条件的数据后,it就指向了该符合条件的数据,
对于vector的iterator使用++操作时,就指向了当前的下一个元素,但是,下一个元素
并不一定是满足条件的数据,所以不能使用++操作来指向下一个元素,而是要用循环
来获取所有满足条件的元素,如下:
...
vector<int>::iterator it = find_if(intVector.begin(), intVector.end(), fun);
if ( it != intVector.end() )
{
//此时it指向第一个满足条件的元素了
}


while ( it != intVecotr.end() )
{
it++;//让it指想满足条件的元素的下一个元素,即,再次搜索时从满足条件的元素的下一个位置开始
it = find_if(it, intVector.end(), fun);
if ( it != intVector.end() )
{
//此时的it是再次找到的符合要求的元素
}
}
... 


=====================================
别的办法最简单的就是排序了,你自定义一个针对你的数据类型做一个排序函数,排好序后,符合你要求的元素就排到了一起了,找到第一个符合你要求的元素后,就可以使用++来挨个访问他们,直到访问到不符合你要求的元素为止.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值