问题描述
我想找到容器中两个元素中任何一个的迭代器。例如,我有一个 {1、2、3、4} @H_502_2@向量,并且我想在其中搜索元素 2 @H_502_2@或 5 @H_502_2@(首先找到它们中的每一个都可以,因为我的容器中只包含其中一个,也不包含任何一个。我正在使用两个std :: find查找两个元素( 2 @H_502_2@和 5 @H_502_2@)中的每个元素,但是有没有更有效的方法?
谢谢, 沙哈卜
解决方法
不要使用std :: find搜索两个元素两次,只需搜索一次即可。问题是std :: find会在找到单个值后立即返回,因此不能在多个值上使用。
{
while (first!=last) {
if (*first==val) return first;
++first;
}
return last;
}
解决方案是创建自己的循环遍历列表并检查列表是否包含(a || b)