温馨提示×

算法

STL(Standard Template Library)是C++标准库的一部分,提供了大量的通用模板类和函数,用于实现各种常用的数据结构和算法。STL中的算法部分提供了许多常用的算法,如查找、排序、遍历等,可以方便地对容器进行操作。

STL算法库包含在头文件中,使用时需要包含该头文件。下面是一些常用的STL算法及其用法:

  1. 查找算法:
  • find:在指定范围内查找指定值的元素,返回第一个符合条件的元素的迭代器。
#include <algorithm>
std::vector<int> vec = {1, 2, 3, 4, 5};
auto it = std::find(vec.begin(), vec.end(), 3);
if (it != vec.end()) {
    std::cout << "找到了元素:" << *it << std::endl;
} else {
    std::cout << "未找到元素" << std::endl;
}
  • count:统计指定值在指定范围内出现的次数。
#include <algorithm>
std::vector<int> vec = {1, 2, 2, 3, 4};
int num = std::count(vec.begin(), vec.end(), 2);
std::cout << "值为2的元素出现次数为:" << num << std::endl;
  1. 排序算法:
  • sort:对指定范围内的元素进行排序,默认升序。
#include <algorithm>
std::vector<int> vec = {5, 2, 7, 1, 9};
std::sort(vec.begin(), vec.end());
for (int num : vec) {
    std::cout << num << " ";
}
  • stable_sort:稳定排序算法,保持相等元素的相对位置不变。
#include <algorithm>
std::vector<int> vec = {5, 2, 7, 1, 9};
std::stable_sort(vec.begin(), vec.end());
for (int num : vec) {
    std::cout << num << " ";
}
  1. 遍历算法:
  • for_each:对指定范围内的每个元素执行指定操作。
#include <algorithm>
std::vector<int> vec = {1, 2, 3, 4, 5};
std::for_each(vec.begin(), vec.end(), [](int num) {
    std::cout << num << " ";
});
  • transform:对指定范围内的每个元素应用指定的操作,并将结果存储到另一个容器中。
#include <algorithm>
std::vector<int> vec = {1, 2, 3, 4, 5};
std::vector<int> newVec;
std::transform(vec.begin(), vec.end(), std::back_inserter(newVec), [](int num) {
    return num * 2;
});
for (int num : newVec) {
    std::cout << num << " ";
}

以上是一些常用的STL算法的用法,STL算法库中还包含许多其他有用的算法,可以根据需要查阅相关文档进行学习和使用。