一 简介
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.
三 参考