查找容器中两个元素中任何一个的迭代器

问题描述

我想找到容器中两个元素中任何一个的迭代器。例如,我有一个 {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)