• 欢迎光临~

STL容器

开发技术 开发技术 2022-01-23 117次浏览

vector

push_back():插入
size():查看元素个数,O(1)
clear():清空
empty():是否为空
pop_back():弹出

stack

stack<int> stk;//定义
stk.push(1);//从栈顶插入
stk.pop();//从栈顶弹出
stk.empty();//是否为空
stk.front();//访问栈顶

queue

queue<int> q;//定义一个队列q
q.push(1);//像队尾插入1
q.pop();//弹出队头
q.empty();//返回队列是否为空
q.front();//返回队头

deque

deque<int> dq;//定义一个双端队列
deque.size();//返回长度
dq.push_front(1);//向队头插入
dq.push_back(1);//向队尾插入
dq.pop_front();//删除队头
dq.pop_back();//删除队尾
dq.front();//访问第一个元素
dq.back();//访问最后一个元素
cout << dq[0] << endl;//下标访问
dq.begin();//开头指针迭代器
dq.end();//末尾指针迭代器
dq.clear();//清空
dq.empty();//是否为空

priority_queue

priority_queue<int> heapone;//定义大根堆
priority_queue<int, vector<int>, greater<int>> heaptwo;//定义小根堆
heaptwo.top();//返回堆顶元素
heaptwo.push(1);//向堆插入一个数。
heaptwo.pop();//弹出堆顶元素
heaptwo.empty();//判断堆是否为空
heaptwo.size();//返回元素个数

string

string line;//定义字符串
getline(cin, line);//读入字符串方式1
cin >> line;//读入字符串方式2
//推荐cin读入字符串
line[1];//访问元素
line.substr(x, y);//取出子串
line.size();//返回元素个数
line.length();//和size相同
line.empty();//判断是否为空
ling.clear();//清空
line.push_back();//插入字符

pair

pair<int, int> tone;//定义二元组
pair<int, pair<int, int>> ttwo;//定义三元组
pair<int, int> tthree[10086];//定义pair数组
cout << tone.first << endl;//查看tone的第1项。
cout << tone.second << endl;//查看tone的第二项
cout << ttwo.second.second << endl;//循环嵌套

map/multimap

map<int, string> Map;//创建一个pair,first为key,second为value
pair<int, string> in = {000, "cht"};
Map.insert(in);//插入
Map.find(000);//返回元素位置
Map.erase(000);//删除元素(至此cht被踢出了Map)
Map.size();//返回大小
Map.begin();//头部迭代器
Map.end();//尾部迭代器
Map.clear();//清空
Map.count();//返回元素个数
Map.empty();//返回map是否为空
Map[0];//下标访问
支持lower_bound()和upper_bound();
Map.lower_bound(x);
Map.upper_bound(x);

set*/multiset

set<int> S;
S.begin();//返回第一个元素
S.end();//返回最后一个元素
S.clear();//清空
S.empty();//是否为空
S.size();//返回长度
S.count(1);//返回1的个数
S.find(1);//寻找
S.erase(1);//删除
S.insert(1);//插入
支持lower_bound()和upper_bound();
s.lower_bound(x);
s.upper_bound(x);

unordered_set/unordered_multiset/unordered_map/unordered_multimap
优点:增删改查速度快O(1)
缺点:不支持lower_bound()和upper_bound()
list

list<int> L;
L.push_back(1);//插入
L.empty();//判断是否为空
L.begin();//返回头结点
L.end();//返回尾部节点
L.insert(L.begin(), 1);//在指定位置插入
L.erase(L.begin());//删除
L.erase(L.begin(), L.end());//区间删除
L.clear();//清空list
L.push_front();//插入
L.pop_front();//删除
L.pop_back();//删除
L.size();//元素个数

bitset

bitset<10086> B;
~B;//取反
|,&,^;//和一般的与或异或一样。
>>,<<;//移位笑
==,!=;//bitset表情包上线
B[1];//访问元素
B.count();//返回1的个数
B.any();//是否存在1
B.none();//是否为空(全为0)
//bitset英语学习器上线。
B.set();//把所有位搞成1
B.set(1, 1);//将第1位变成1
B.reset();//把所有位变成0
B.flip();//从名字来,取反所有位
B.flip(1);//取反第一位
程序员灯塔
转载请注明原文链接:STL容器
喜欢 (0)
违法和不良信息举报电话:022-22558618 举报邮箱:dljd@tidljd.com