C++中std::algorithm库提供高效容器操作算法,定义于<algorithm>头文件,配合迭代器使用。1. 查找类函数:std::find查找首现元素,std::count统计指定值个数,std::find_if查找满足谓词的第一个元素。示例中在vector中找5的位置并计数,用lambda查找偶数。2. 排序与相关操作:std::sort升序排序,std::reverse反转元素,std::is_sorted判断是否有序,std::unique去重(需配合erase)。示例对数据排序、反转并去重。3. 修改型算法:std::copy复制元素,std::fill填充区间,std::replace替换值,std::transform应用操作生成新结果。示例填充7、平方转换。4. 比较与逻辑操作:std::equal判断两区间相等,std::lexicographical_compare字典序比较,std::search查找子序列。示例验证两向量相等并定位子序列。多数算法不改变容器大小,删除需结合erase。掌握这些可提升代码效率与可读性。

在C++中,std::algorithm 库提供了大量用于操作容器的通用算法。这些函数定义在 red"><algorithm> 头文件中,配合迭代器使用,能高效完成查找、排序、遍历、修改等任务。下面是一些最常用的函数及其使用示例。
用于在范围内查找特定元素或满足条件的元素。
// 示例:查找和计数
#include <algorithm>
#include <vector>
#include <iostream>
<p>std::vector<int> nums = {1, 3, 5, 7, 5, 9};</p><p><span>立即学习</span>“<a href="https://pan.quark.cn/s/6e7abc4abb9f" style="text-decoration: underline !important; color: blue; font-weight: bolder;" rel="nofollow" target="_blank">C++免费学习笔记(深入)</a>”;</p><p>auto it = std::find(nums.begin(), nums.end(), 5);
if (it != nums.end()) {
std::cout << "找到元素,位置:" << it - nums.begin() << "\n";
}</p><p>int cnt = std::count(nums.begin(), nums.end(), 5);
std::cout << "数字5出现次数:" << cnt << "\n";</p><p>auto even = std::find_if(nums.begin(), nums.end(), [](int x) { return x % 2 == 0; });
if (even == nums.end()) {
std::cout << "没有偶数\n";
}</p>对容器中的元素进行排序或判断有序性。
// 示例:排序与去重
std::vector<int> data = {5, 2, 8, 2, 1, 5, 9};
<p>std::sort(data.begin(), data.end());
// 结果:{1,2,2,5,5,8,9}</p><p>std::reverse(data.begin(), data.end());
// 结果:{9,8,5,5,2,2,1}</p><p>// 去重
auto last = std::unique(data.begin(), data.end());
data.erase(last, data.end());
// 结果:{9,8,5,2,1}</p>用于复制、替换、填充等操作。
// 示例:填充与转换
std::vector<int> vec(5);
std::fill(vec.begin(), vec.end(), 7); // 全部设为7
<p>std::vector<int> src = {1, 2, 3, 4};
std::vector<int> dst(4);
std::transform(src.begin(), src.end(), dst.begin(), [](int x) { return x * x; });
// dst 变为 {1,4,9,16}</p>判断两个序列是否相等,或是否存在某种关系。
// 示例:比较与搜索
std::vector<int> a = {1,2,3}, b = {1,2,3};
if (std::equal(a.begin(), a.end(), b.begin())) {
std::cout << "a 和 b 相等\n";
}
<p>std::vector<int> text = {1,2,3,4,5};
std::vector<int> pattern = {3,4};
auto pos = std::search(text.begin(), text.end(), pattern.begin(), pattern.end());
if (pos != text.end()) {
std::cout << "子序列在位置 " << pos - text.begin() << "\n";
}</p>基本上就这些常用函数。掌握它们可以大幅提升代码效率和可读性。注意:大多数算法不改变容器大小,如需删除元素,常需配合容器自身的 erase 方法。
以上就是C++的std::algorithm库有哪些常用函数_C++算法库常用函数与示例汇总的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号