欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

std::find std::execution

程序员文章站 2024-03-18 08:46:10
...

一 简介

std::find 头文件<algorithm> 

template< class InputIt, class T >
InputIt find( InputIt first, InputIt last, const T& value );  (1) (C++20 前)
template< class InputIt, class T >
constexpr InputIt find( InputIt first, InputIt last, const T& value ); (2) (C++20 起)
template< class ExecutionPolicy, class ForwardIt, class T >
ForwardIt find( ExecutionPolicy&& policy, ForwardIt first, ForwardIt last, const T& value ); (3) (C++17 起)

二 举例

(1)和(2)比较好理解。

std::vector<int> vec = {1, 2, 3, 4, 5, 6, 7};
auto it = std::find(vec.begin(), vec.end(), 1);
if (vec.end() != it) {
  std::cout << "find it!" << std::endl;
}
// output: find it!

 (3)特殊之处在policy,它是C++17起定义的一种并行算法的执行策略类型,定义于头文件 <execution>, 有以下4类:

class sequenced_policy { /* unspecified */ }; (1) (C++17 起)
class parallel_policy { /* unspecified */ };  (2) (C++17 起)
class parallel_unsequenced_policy { /* unspecified */ }; (3) (C++17 起)
class unsequenced_policy { /* unspecified */ };    (4)    (C++20 起)

auto it1 = std::find(std::execution::seq, vec.begin(), vec.end(), 1);
if (vec.end() != it1) {
  std::cout << "find it again!" << std::endl;
}
// output: find it again!
// 注:vs2017 15.7全面支持C++17, 我使用版本为15.9.14 ,且功能属性->C/C++->语言->C++语言标准选择C++17.

三 参考

std::find

std::execution