algorithm

  1. 查找和比较
  2. find:在范围内查找元素。
  3. find_if:在范围内查找满足指定条件的元素。
  4. count:统计范围内满足条件的元素个数。
  5. count_if:统计范围内满足指定条件的元素个数。
  6. equal:比较两个范围是否相等。
  7. lexicographical_compare:按字典序比较两个范围。
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;

int main() {
    vector<int> vec = {1, 2, 3, 4, 5};

    // 查找元素
    auto it = find(vec.begin(), vec.end(), 3);
    if (it != vec.end()) {
        cout << "Element found: " << *it << endl;
    }

    // 查找满足条件的元素
    auto it2 = find_if(vec.begin(), vec.end(), [](int x) { return x > 3; });
    if (it2 != vec.end()) {
        cout << "Element > 3 found: " << *it2 << endl;
    }

    // 统计元素个数
    int num = count(vec.begin(), vec.end(), 2);
    cout << "Number of 2s: " << num << endl;

    // 比较两个范围
    vector<int> vec2 = {1, 2, 3};
    bool result = equal(vec.begin(), vec.end(), vec2.begin(), vec2.end());
    if (result) {
        cout << "Vectors are equal" << endl;
    } else {
        cout << "Vectors are not equal" << endl;
    }

    return 0;
}
  1. 排序和操作
  2. sort:对范围内的元素进行排序。
  3. reverse:反转范围内的元素顺序。
  4. copy:将范围内的元素复制到另一个位置。
  5. remove:移除范围内满足条件的元素(不会改变容器大小)。
  6. remove_if:移除范围内满足指定条件的元素(不会改变容器大小)。
  7. transform:对范围内的元素执行指定操作。
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;

int main() {
    vector<int> vec = {5, 3, 1, 4, 2};

    // 排序
    sort(vec.begin(), vec.end());

    // 反转元素顺序
    reverse(vec.begin(), vec.end());

    // 复制元素到另一个位置
    vector<int> vec2(5);
    copy(vec.begin(), vec.end(), vec2.begin());

    // 移除元素
    vec.erase(remove(vec.begin(), vec.end(), 3), vec.end());

    // 对元素执行操作
    transform(vec.begin(), vec.end(), vec.begin(), [](int x) { return x * 2; });

    // 输出元素
    for (auto& num : vec) {
        cout << num << " ";
    }
    cout << endl;

    return 0;
}