小编nas*_*ver的帖子

按值的未排序std :: find和std :: any_of

假设我有一个,std::vector<int>并且想知道它是否包含3或将迭代器添加到3

我不想使用std::setstd::multiset出于任何原因。

我想在std::execution::par_unseq模式下执行此操作。
我看到的两个选项是std::any_ofstd::find,但是它们对我来说不太合适。

#include <execution>
#include <functional>
#include <iostream>
#include <vector>

int main()
{
  std::vector vec{ 1, 1, 1, 1, 1, 3, 3, 3, 3 };

  bool contains{ std::any_of(
      std::execution::par_unseq,
      vec.begin(), vec.end(),
      std::bind(std::equal_to{}, std::placeholders::_1, 3)) };

  auto found{ std::find(std::execution::par_unseq, vec.begin(), vec.end(), 3) };

  return 0;
}
Run Code Online (Sandbox Code Playgroud)

std::any_of应该做我想做的,但呼叫是他们做的非常凌乱。范围std::bind_front会有所帮助,但不是很多。

问题std::find在于它必须找到a 的第一次出现3,这限制了它的效率,因为我不在乎3它的发现。

  • 除了std::any_of按值搜索之外,还有其他选择吗? …

c++ parallel-processing search find c++20

5
推荐指数
1
解决办法
93
查看次数

标签 统计

c++ ×1

c++20 ×1

find ×1

parallel-processing ×1

search ×1