STL中常用的容器和函数

所有容器都支持的方法栈(stack)循环队列(queue)优先队列(priority_queue)有序集合(set)向量(vector)字典(map)对组(pair)字符串(string)sort函数max、mC++的标准模板库(Standard Template Library, 简称STL)是一个容器和算法的类库,比较常用的容器有stack、queue、priorty_queue、set等,比较常用的算法有sort等所有容器都支持的方法方法描述示例时间复杂度...
摘要由CSDN通过智能技术生成


C++的标准模板库(Standard Template Library, 简称STL)是一个容器和算法的类库,比较常用的容器有stack、queue、priorty_queue、set、vector、pair、string等,比较常用的算法有sort、max、min、abs、swap、reverse等

所有容器都支持的方法

方法 描述 示例 时间复杂度
size 返回容器中的元素数目 s.size() O(1)
empty 判断容器是否为空,容器空时,返回true s.empty() O(1)

栈(stack)

包含在stack头文件中

特点:只能在栈顶放入元素,在栈顶删除元素,后进先出

方法 描述 示例 时间复杂度
push 入栈(栈顶) s.push(x) O(1)
pop 出栈(栈顶) s.pop() O(1)
top 返回栈顶元素 s.top() O(1)

循环队列(queue)

包含在queue头文件中

特点:只能从队头删除元素,从队尾放入元素,先进先出

方法 描述 示例 时间复杂度
push 入队(队尾) que.push(x) O(1)
pop 出队(队头) que.pop() O(1)
front 返回队头元素 que.front() O(1)
back 返回队尾元素 que.back() O(1)

优先队列(priority_queue)

包含在queue头文件中

priority_queue可以理解为一个大根二叉堆,堆顶元素为最大值

声明一个从大到小取出数值的优先队列

priority_queue<int> que; // 大根堆

声明一个从小到大取出数值的优先队列

priority_queue<int, vector<int>, greater<int> > que; // 小根堆
方法 描述 示例 时间复杂度
push 把元素x插入堆 que.push(x) O(logn)
pop 删除堆顶元素 que.pop() O(logn)
top 返回堆顶元素 que.top() O(1)

有序集合(set)

包含在set头文件中

set由红黑树实现,set中的元素不能重复,有自动去重的功能

方法 描述 示例 时间复杂度
clear 清空 s.clear() O(n)
insert 插入元素x s.insert(x) O(logn)
find 返回等于x的元素的迭代器。若不存在等于x的元素,则返回s.end() s.find(x) O(logn)
erase 删除迭代器it指向的元素 s.erase(it) O(logn)
erase 删除等于x的元素 s.erase(x) O(logn)
count 返回集合中等于x的元素个数 s.count(x) O(logn)

向量(vector)

包含在vector头文件中

vector是一个动态数组,可以像数组一样用下标访问元素

方法 描述 示例 时间复杂度
clear 清空 v.clear() O(n)
push_back 把元素x放入vector尾部 v.push_back(x) O(1)
pop_back 删除vector尾部的最后一个元素 v.pop_back O(1)

初始化方式:

1)默认初始化:

vector<int> vec;

2)拷贝

vector<int> vec2(vec);

3)包含初始值

vector<int> vec = {
   1, 2, 3};

参考:https://blog.csdn.net/veghlreywg/article/details/80400382

排序:

用sort进行排序(可以写cmp函数或者重载<)

字典(map)

包含在map头文件中

map是一个关联容器,提供一对一的键值对(key-value)映射

方法 描述 示例
  • 6
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值