当前位置:首页 C++ > 正文

C++STL库常用库函数总结

作者:野牛程序员:2024-01-22 17:58:54 C++阅读 2700

C++ STL(标准模板库)提供了丰富的功能和数据结构,以下是一些常用的库函数总结:

  1. 容器(Containers):

    • vector: 动态数组,提供动态大小的数组。

    • list: 双向链表,允许在两端高效插入和删除。

    • deque: 双端队列,允许在两端高效插入和删除,与vector相似。

    • queue: 队列,先进先出(FIFO)。

    • stack: 栈,后进先出(LIFO)。

    • set: 集合,元素唯一,自动排序。

    • map: 映射,键值对,自动排序。

    • unordered_set: 无序集合,元素唯一。

    • unordered_map: 无序映射,键值对,元素唯一。

  2. 算法(Algorithms):

    • sort: 对序列进行排序。

    • find: 在序列中查找元素。

    • reverse: 反转序列中的元素。

    • max/min: 返回序列中的最大/最小元素。

    • count: 计算序列中某个值的个数。

    • accumulate: 对序列进行累加。

    • binary_search: 在有序序列中进行二分查找。

  3. 迭代器(Iterators):

    • begin/end: 返回指向容器起始/结束的迭代器。

    • advance: 推进迭代器到指定位置。

    • distance: 计算两个迭代器之间的距离。

  4. 函数对象(Function Objects):

    • greater/less: 用于比较大小。

    • plus/minus: 用于加法和减法。

    • logical_and/logical_or: 用于逻辑与和逻辑或。

  5. 算法操作(Algorithmic Operations):

    • for_each: 对序列中的每个元素执行操作。

    • transform: 对序列中的每个元素进行转换。

  6. 数值操作(Numeric Operations):

    • accumulate: 对序列进行累加。

    • inner_product: 计算两个序列的内积。

    • partial_sum: 计算部分和。

#include <iostream>
#include <vector>
#include <list>
#include <deque>
#include <queue>
#include <stack>
#include <set>
#include <map>
#include <unordered_set>
#include <unordered_map>
#include <algorithm>
#include <numeric>

int main() {
    // 1. 容器
    std::vector<int> vec = {1, 2, 3, 4, 5};
    std::list<int> lst = {5, 4, 3, 2, 1};
    std::deque<int> deq = {1, 2, 3, 4, 5};
    std::queue<int> que;
    std::stack<int> stk;
    std::set<int> s = {3, 1, 4, 1, 5, 9};
    std::map<int, std::string> mp = {{1, "one"}, {2, "two"}};
    std::unordered_set<int> us = {3, 1, 4, 1, 5, 9};
    std::unordered_map<int, std::string> ump = {{1, "one"}, {2, "two"}};

    // 2. 算法
    std::sort(vec.begin(), vec.end());
    auto it = std::find(lst.begin(), lst.end(), 3);
    std::reverse(deq.begin(), deq.end());
    int max_val = *std::max_element(vec.begin(), vec.end());
    int count_1 = std::count(vec.begin(), vec.end(), 1);
    int sum = std::accumulate(vec.begin(), vec.end(), 0);

    // 3. 迭代器
    auto first = vec.begin();
    auto last = vec.end();
    std::advance(first, 2);
    int distance = std::distance(first, last);

    // 4. 函数对象
    std::vector<int> nums = {3, 1, 4, 1, 5, 9};
    std::sort(nums.begin(), nums.end(), std::greater<int>());

    // 5. 算法操作
    std::for_each(vec.begin(), vec.end(), [](int& n) { n *= 2; });
    std::transform(vec.begin(), vec.end(), vec.begin(), [](int n) { return n * 2; });

    // 6. 数值操作
    int acc_sum = std::accumulate(vec.begin(), vec.end(), 0);
    int inner_prod = std::inner_product(vec.begin(), vec.end(), nums.begin(), 0);
    std::partial_sum(vec.begin(), vec.end(), vec.begin());

    return 0;
}


野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892
野牛程序员教少儿编程与信息学竞赛-微信|电话:15892516892
相关推荐

最新推荐

热门点击