杨浦区建设小学网站,重庆网站建设机构,淘宝不能发布网站源码做商品,最专业的手机网站制作C algorithm 头文件是标准库中提供的一系列算法#xff0c;用于操作范围#xff08;range#xff09;内的元素。这些算法可以用于数组、容器如vector和list#xff0c;以及其他满足相应迭代器要求的数据结构。以下是一些常用的C algorithm 中的算法及其使用…C algorithm 头文件是标准库中提供的一系列算法用于操作范围range内的元素。这些算法可以用于数组、容器如vector和list以及其他满足相应迭代器要求的数据结构。以下是一些常用的C algorithm 中的算法及其使用示例。
1. std::sort排序
对给定范围内的元素进行排序。默认情况下按照升序排列但也可以指定自定义比较函数。
#include algorithm
#include vector
#include iostreamint main() {std::vectorint v {5, 3, 1, 4, 2};std::sort(v.begin(), v.end());for (int i : v) std::cout i ; // 输出1 2 3 4 5return 0;
}2. std::count_if计数满足条件的元素
计算范围内满足特定条件的元素数量。
#include algorithm
#include vector
#include iostreambool is_even(int n) { return n % 2 0; }int main() {std::vectorint v {1, 2, 3, 4, 5, 6};int count std::count_if(v.begin(), v.end(), is_even);std::cout Even numbers: count std::endl; // 输出Even numbers: 3return 0;
}3. std::find_if查找第一个满足条件的元素
返回指向范围内第一个满足特定条件的元素的迭代器。
#include algorithm
#include vector
#include iostreambool is_target(int n) { return n 42; }int main() {std::vectorint v {10, 20, 30, 42, 50};auto it std::find_if(v.begin(), v.end(), is_target);if (it ! v.end()) std::cout Found: *it std::endl; // 输出Found: 42else std::cout Not found std::endl;return 0;
}4. std::transform转换范围
对范围内的每个元素应用一个函数并将结果存储在另一个容器或序列中。
#include algorithm
#include vector
#include iostreamint square(int n) { return n * n; }int main() {std::vectorint v1 {1, 2, 3, 4, 5};std::vectorint v2(v1.size());std::transform(v1.begin(), v1.end(), v2.begin(), square);for (int i : v2) std::cout i ; // 输出1 4 9 16 25return 0;
}5. std::accumulate累积值
对范围内的元素执行累积操作如求和、求乘积等。
#include algorithm
#include vector
#include iostream
#include numericint main() {std::vectorint v {1, 2, 3, 4, 5};int sum std::accumulate(v.begin(), v.end(), 0);std::cout Sum: sum std::endl; // 输出Sum: 15return 0;
}6. std::remove_if移除满足条件的元素
将不满足特定条件的元素移动到范围的前端并返回新的逻辑结束位置的迭代器。实际删除操作需配合容器的erase方法。
#include algorithm
#include vector
#include iostreambool is_odd(int n) { return n % 2 ! 0; }int main() {std::vectorint v {1, 2, 3, 4, 5, 6};auto new_end std::remove_if(v.begin(), v.end(), is_odd);v.erase(new_end, v.end()); // 实际删除操作for (int i : v) std::cout i ; // 输出2 4 6return 0;
}