runoob_10_algorithm

/*
 * @Author: by777
 * @Date: 2025-03-21 18:17:39
 * @LastEditors: by777
 * @LastEditTime: 2025-03-24 11:54:01
 * @FilePath: /cxx_stl/runoob_10.cpp
 * @Description: https://www.runoob.com/cplusplus/cpp-libs-algorithm.html
 * 
 * Copyright (c) 2025 by by777, All Rights Reserved. 
 */
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int main(int argc, const char** argv) {
    cout<<"=========1. sort========="<<endl;
    vector<int> numbers = {5, 2, 9, 1, 5, 6};
    sort(numbers.begin(), numbers.end());
    // partial_sort 对部分区间排序,前 n 个元素为有序。|| stable_sort 稳定排序,保留相等元素的相对顺序。
    for(int num: numbers){
        cout<<num<<" ";
    }

    cout<<"=========2. find========="<<endl;
    auto it = find(numbers.begin(), numbers.end(), 3);
    // binary_search: 对有序区间进行二分查找。 || find_if: 查找第一个满足特定条件的元素。
    if(it!=numbers.end()){
        cout<<"Found: "<<*it<<endl;
    }else{
        cout<<"Not Found"<<endl;
    }

    cout<<"=========3. copy========="<<endl;

    cout<<"=========4. equal========="<<endl;
    std::vector<int> v1 = {1, 2, 3, 4, 5};
    std::vector<int> v2 = {1, 2, 3, 4, 5};

    bool are_equal = std::equal(v1.begin(), v1.end(), v2.begin());
    std::cout << (are_equal ? "Vectors are equal." : "Vectors are not equal.") << std::endl;

    cout<<"=========5. reverse========="<<endl;//反转区间内的元素顺序
    cout<<"=========6. fill========="<<endl;//将指定区间内的所有元素赋值为某个值
    cout<<"=========7. replace========="<<endl;//将区间内的某个值替换为另一个值
    cout<<"=========8. copy========="<<endl;
    cout<<"=========9. next_permutation========="<<endl; // 生成字典序的下一个排列
    std::vector<int> vec = {1, 2, 3};
    do {
        for (int n : vec) std::cout << n << " ";
        std::cout << std::endl;
    } while (std::next_permutation(vec.begin(), vec.end()));
    cout<<"=========10. merge========="<<endl; // 把两个有序区间合并到一个有序区间
    std::vector<int> vec1 = {1, 3, 5};
    std::vector<int> vec2 = {2, 4, 6};
    std::vector<int> result(6);
    std::merge(vec1.begin(), vec1.end(), vec2.begin(), vec2.end(), result.begin());
    cout<<"=========11. inplace_merge========="<<endl; // 在单个区间中合并两个有序子区间
    // std::vector<int> middle(6);
    // std::inplace_merge(vec1.begin(), middle, vec1.end());
    cout<<"=========12. accumulate========="<<endl; // 计算范围内的元素累加和
    cout<<"=========13. for each========="<<endl; // 对区间内每个元素执行操作
    std::for_each(vec.begin(), vec.end(), [](int &x){x += 1;});
    cout<<"=========14. min_element/max_element========="<<endl; // 查找区间内的最小值和最大值

    return 0;
}
posted @ 2025-03-25 10:42  白柒  阅读(17)  评论(0)    收藏  举报