C++初学者指南-5.标准库(第一部分)–标准库查询存在算法
不熟悉 C++ 的标准库算法? ⇒ 简介
any_of / all_of / none_of
如果在输入范围(所有元素,任意一个元素或没有元素)内check的结果为true,则返回true。
cppreferencestd::vector<int> v {0,2,9,1,3,8,5,2,9}; auto const check = [](int x) { return x >= 1; }; // 在子范围内(如图所示): cout << all_of (begin(v)+1, begin(v)+7, check); // true cout << any_of (begin(v)+1, begin(v)+7, check); // true cout << none_of(begin(v)+1, begin(v)+7, check); // false // 整个vector: cout << all_of (begin(v), end(v), check); // false cout << any_of (begin(v), end(v), check); // true cout << none_of(begin(v), end(v), check); // false
std::vector<int> v {0,2,9,1,3,8,5,2,9}; auto const check = [](int x) { return x >= 1; }; cout << std::ranges::all_of (v, check); // false cout << std::ranges::any_of (v, check); // true cout << std::ranges::none_of(v, check); // false
count
std::vector<int> v {5,2,9,1,3,2,5,2,2,9}; // 子范围内计数(如图所示): auto n = count(begin(v)+1, begin(v)+8, 2); // n = 3 // 整个vector计数: auto m = count(begin(v), end(v), 2); // m = 4
std::vector<int> v {2,9,1,3,2,5,2}; cout << std::ranges::count(v, 3); // 1 cout << std::ranges::count(v, 2); // 3 cout << std::ranges::count(v, 7); // 0
count_if
std::vector<int> v {5,4,9,1,3,2,5,6,8,9}; auto const is_even = [](int x) { return !(x & 1); }; // 子范围内计数(如图所示): auto n = count_if (begin(v)+1, begin(v)+8, is_even); // n = 3 // 整个vector计数: auto m = count_if (begin(v), end(v), is_even); // m = 4
std::vector<int> v {4,9,1,3,2,5,6}; auto const is_even = [](int x) { return !(x & 1); }; auto n = std::ranges::count_if(v, is_even); // n = 3
相关内容
视频:count, count_if and more by Conor Hoekstra
标准算法概述
C++标准库算法介绍
标准序列容器(vector、deque、list、…)
标准关联容器(map、set、…)
标准序列视图
cppreference:算法库
cppreference:容器库
视频:什么是 C++ 标准库?
视频:一小时内掌握 105 个 STL 算法 (Jonathan Boccara,2018)
C++ 之旅:容器和算法
算法概述表:
附上原文链接
如果文章对您有用,请随手点个赞,谢谢!^_^