C++STL中的常见算法

STL中的常见算法:

  1. 搜索算法 - std::find:

    #include <algorithm>
    #include <vector>
    
    int main() {
        std::vector<int> vec = {1, 2, 3, 4, 5};
        auto it = std::find(vec.begin(), vec.end(), 3);
        if (it != vec.end()) {
            std::cout << "Found 3 at position: " << std::distance(vec.begin(), it);
        }
        return 0;
    }
    
  2. 排序算法 - std::sort:

    #include <algorithm>
    #include <vector>
    
    int main() {
        std::vector<int> vec = {5, 3, 1, 4, 2};
        std::sort(vec.begin(), vec.end());
        return 0;
    }
    
  3. 归并算法 - std::merge:

    #include <algorithm>
    #include <vector>
    
    int main() {
        std::vector<int> vec1 = {1, 3, 5};
        std::vector<int> vec2 = {2, 4, 6};
        std::vector<int> merged(vec1.size() + vec2.size());
        std::merge(vec1.begin(), vec1.end(), vec2.begin(), vec2.end(), merged.begin());
        return 0;
    }
    
  4. 集合算法 - std::set_union:

    #include <algorithm>
    #include <vector>
    
    int main() {
        std::vector<int> vec1 = {1, 2, 3};
        std::vector<int> vec2 = {3, 4, 5};
        std::vector<int> unionVec;
        std::set_union(vec1.begin(), vec1.end(), vec2.begin(), vec2.end(), std::back_inserter(unionVec));
        return 0;
    }
    
  5. 数值算法 - std::accumulate:

    #include <numeric>
    #include <vector>
    
    int main() {
        std::vector<int> vec = {1, 2, 3, 4, 5};
        int sum = std::accumulate(vec.begin(), vec.end(), 0);
        std::cout << "Sum: " << sum;
        return 0;
    }
    
  6. 变换算法 - std::transform:

    #include <algorithm>
    #include <vector>
    
    int main() {
        std::vector<int> vec = {1, 2, 3, 4, 5};
        std::vector<int> transformedVec(vec.size());
        std::transform(vec.begin(), vec.end(), transformedVec.begin(), [](int x) { return x * x; });
        return 0;
    }
    
  7. 排列算法 - std::next_permutation:

    #include <algorithm>
    #include <vector>
    
    int main() {
        std::vector<int> vec = {1, 2, 3};
        if (std::next_permutation(vec.begin(), vec.end())) {
            for (int i : vec) {
                std::cout << i << " ";
            }
        }
        return 0;
    }
    
  8. 堆算法 - std::make_heapstd::pop_heap:

    #include <algorithm>
    #include <vector>
    
    int main() {
        std::vector<int> vec = {5, 1, 3};
        std::make_heap(vec.begin(), vec.end());
        // Pop the largest element off the heap
        std::pop_heap(vec.begin(), vec.end());
        vec.pop_back();
        return 0;
    }
    
  9. 最小/最大算法 - std::min_element:

    #include <algorithm>
    #include <vector>
    
    int main() {
        std::vector<int> vec = {5, 1, 3, 4, 2};
        auto minIt = std::min_element(vec.begin(), vec.end());
        std::cout << "Minimum element: " << *minIt;
        return 0;
    }
    
  10. 复制和移动算法 - std::copy:

    #include <algorithm>
    #include <vector>
    #include <iostream>
    
    int main() {
        std::vector<int> source = {1, 2, 3, 4, 5};
        std::vector<int> destination(source.size());
        std::copy(source.begin(), source.end(), destination.begin());
        return 0;
    }
    
  11. 填充和生成算法 - std::fill:

    #include <algorithm>
    #include <vector>
    
    int main() {
        std::vector<int> vec(5);
        std::fill(vec.begin(), vec.end(), 10);
        return 0;
    }
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值