C++ 中常用的 STL(标准模板库)函数总结

以下是 C++ 中常用的 STL(标准模板库)函数总结:

一、容器相关

  1. vector(动态数组)
    • 构造函数
      • vector<T> v;:创建一个空的vector,其中T是元素类型。
      • vector<T> v(n);:创建一个包含n个默认初始化元素的vector
      • vector<T> v(n, value);:创建一个包含n个值为value的元素的vector
    • 添加元素
      • v.push_back(element);:在vector的末尾添加一个元素element
    • 访问元素
      • v[i]:通过下标i访问vector中的元素,不进行边界检查。
      • v.at(i):通过下标i访问vector中的元素,进行边界检查,越界会抛出out_of_range异常。
    • 获取大小和容量
      • v.size():返回vector中元素的个数。
      • v.capacity():返回vector当前分配的存储空间能够容纳的元素数量。
    • 删除元素
      • v.pop_back();:删除vector末尾的一个元素。
  2. list(双向链表)
    • 构造函数
      • 类似vector,有list<T> l;list<T> l(n);list<T> l(n, value);等形式。
    • 添加元素
      • l.push_back(element);:在链表末尾添加元素。
      • l.push_front(element);:在链表头部添加元素。
    • 访问元素
      • 不支持随机访问,只能通过迭代器逐步访问。例如:
        for (auto it = l.begin(); it!= l.end(); ++it) {
            cout << *it << endl;
        }
  • 删除元素
    • l.pop_back();:删除链表末尾元素。
    • l.pop_front();:删除链表头部元素。
    • l.remove(value);:删除链表中所有值为value的元素。

  1. map(关联容器,键 - 值对)

    • 构造函数
      • map<Key, Value> m;:创建一个空的map,其中Key是键类型,Value是值类型。
    • 插入元素
      • m.insert(pair<Key, Value>(key, value));:插入一个键值对。
      • m[key]=value;:如果key不存在,则插入键值对;如果key已存在,则更新对应的值。
    • 查找元素
      • m.find(key):返回指向键为key的元素的迭代器,如果不存在则返回m.end()
    • 访问元素
      • 通过键来访问值,例如m[key]
    • 删除元素
      • m.erase(key);:删除键为key的元素。
  2. set(集合,只存储唯一元素)

    • 构造函数
      • set<T> s;:创建一个空的set
    • 插入元素
      • s.insert(element);:插入一个元素,如果元素已存在则不做任何操作。
    • 查找元素
      • s.find(element):返回指向元素的迭代器,如果不存在则返回s.end()
    • 删除元素
      • s.erase(element);:删除指定元素。

二、算法相关(<algorithm>头文件)

  1. 排序算法
    • sort(begin, end):对指定区间[begin, end)内的元素进行排序,默认使用<运算符比较元素。例如,对vector<int> v排序:sort(v.begin(), v.end());
    • stable_sort(begin, end):稳定排序,保证相等元素的相对顺序不变。
  2. 查找算法
    • find(begin, end, value):在区间[begin, end)内查找值为value的元素,返回指向该元素的迭代器,如果不存在则返回end。例如,在vector<int> v中查找5auto it = find(v.begin(), v.end(), 5);
    • binary_search(begin, end, value):在已排序的区间[begin, end)内使用二分查找法查找值为value的元素,返回truefalse
  3. 数值算法
    • accumulate(begin, end, init):计算区间[begin, end)内元素的总和,初始值为init。例如,计算vector<int> v的元素总和:int sum = accumulate(v.begin(), v.end(), 0);

三、迭代器相关

  1. begin()end()
    • 几乎所有容器都提供这两个函数,begin()返回指向容器第一个元素的迭代器,end()返回指向容器末尾(最后一个元素之后)的迭代器。例如:
      vector<int> v = {1, 2, 3};
      for (auto it = v.begin(); it!= v.end(); ++it) {
          cout << *it << endl;
      }
  1. rbegin()rend()
    • 用于反向迭代器,rbegin()指向容器的最后一个元素,rend()指向容器第一个元素之前的位置。适用于需要反向遍历容器的情况。例如:
list<int> l = {1, 2, 3};
for (auto it = l.rbegin(); it!= l.rend(); ++it) {
    cout << *it << endl;
}

喜欢的朋友可以点点关注,下期再给大家分享干货! 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值