c++ 常用的 STL

发布时间 2023-08-18 21:28:07作者: iSheep

c++ 中常用的 STL

vector

//vector 变长数组 倍增的思想(倍增:系统为每一个程序分配空间的时候,所需要的时间和空间大小无关,与请求次数相关)尽量减少请求的次数

/*
返回元素的个数
size()

判断是否为空
empty()


清空
clear()

front() 返回第一个数  back()  返回最后一个数

push_back()/pop_back()

begin() / end()

支持比较运算
*/

pair<类型, 类型>

/*
pair<int ,int> 可以存储一个二元值,前后两个值 的类型可以使任意的

first  是第一个元素   second  是第二个元素
支持比较运算,以first为第一关键字, second为第二关键字
*/

string

/*
string 字符串

substr(m, n)  下标从 m 开始 长度为 n 的子串

s_str()

size()

empty()

clear()
*/

queue priority_queue

/*
queue  队列

push()  向队尾插入一个元素
pop()  弹出队头元素
front()  返回队头元素   back()  返回队尾元素


priority_queue  优先队列
push()  插入一个元素
top()  返回堆顶元素
pop()  弹出堆顶元素
*/

stack

/*
stack  栈

size()
push()  向栈顶插入一个元素
top()  返回栈顶元素
pop()  弹出栈顶元素
*/

deque

/*
deque  双端队列  队头队尾都可以插入删除

size()
clear()
front()
back()
push_back()/pop_back()
push_front()/pop_front()
begin() / end()
*/

set map multiset multimap

/*
公有地
size()
empty()
begin()/end()   
-- ++   前驱后继


set/multiset

find()  查找一个数
insert()  插入一个数
count()  返回某一个数的个数
erase()  
1. 输入一个数x  删除所有的 x   时间复杂度 O(k+logn)
2. 输入一个迭代器 , 删除这个迭代器

lower_bound()/upper_bound()
lower_bound()  返回大于等于x的最小的迭代器
upper_bound()  返回大于x最小的迭代器


map  multimap

insert()  插入的数是一个pair
erase()  输入的参数时pair 或者迭代器都可以
find()

[]  可以通过下标取到 时间复杂度 O(logn)
lower_bound/upper_bound

unordered_set   unordered_map   unordered_mulyiset  unordered_multimap
哈希表实现,和上面类似, 增删改查的时间复杂度 O(1)
不支持 lower_bound()  /  upper_bound()
 */

bitset

/*
bitset  压位

bitset<10000> s;

~  &  |  ^

==   !=
[]

count()  返回多少个1  any() 判断是否至少一个1
none()  判断是否为 0

set()  把所有位置置成1
set(k,v)  把第k位改成v
reset()  把所有位置变成0
*/