STL库简介、常见使用方式与对应练习题
STL全名Standard Template Library(标准模板库)是 C++ 标准库的一部分,不需要单独安装,只需要 #include 头文件
STL常用容器主要包括三大类:顺序性容器(vector、deque、list)、关联容器(map、set)、容器适配器(queue、stack)
STL六大部件:
- 容器(Containers)
- 分配器(Allocators)
- 算法(Algorithm)
- 迭代器(Iterators)
- 适配器(Adapters)
- 仿函数(Functors)
二、通用语法
1 2 3 4 5
| size() erase() begin() end() q.empty();
|
迭代器遍历
1 2 3 4 5 6 7
| vector<int> st; vector<int>::iterator it = st.begin(); while(it != st.end()) { cout << *it << endl; it++; }
|
3,常用容器
1. vector
倒序输出1~n内的质数
1 2
| push_back(x) 成员函数在向量的末尾插入x,如果有必要会扩展向量的大小。 pop_back() 删除末尾值
|
2.set (unordered_set, multiset)
P1059 明明的随机数 - 洛谷
1
| insert() 它将新元素插入到迭代器指向的位置之前
|
3.map (unordered_map, multimap)
P1097 统计数字 - 洛谷
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| #include <bits/stdc++.h> using namespace std; const int N = 10000; int main() { map<int, int> mp; mp[100] = 3; mp[5] = 1; for (auto a : mp) cout << a.first << " " << a.second << endl; for (const auto& [key, value] : mp) cout << '[' << key << "] = " << value << "; "; return 0; }
|
4.stack
3693. 括号匹配 - AcWing题库
1 2 3 4
| stack<int> st; st.push(x); st.top(); st.pop();
|
5.queue
B3616 【模板】队列 - 洛谷
1 2 3
| q.push() q.front() q.pop()
|
6.priority_queue
P3378 【模板】堆 - 洛谷
1 2 3 4 5
| q.top() q.pop() q.push() q.empty() q.size()
|
priority_queue<Type, Container, Functional>
1 2 3 4 5
| priority_queue<int> q; priority_queue<int,vector<int>,less<int> >q; priority_queue<int,vector<int>,greater<int> >q;
|
单调队列:
P1886 滑动窗口 /【模板】单调队列 - 洛谷
单调栈:
830. 单调栈 - AcWing题库
二,数据结构
数组模拟:单链表,双链表
B3631 单向链表 - 洛谷
蓝桥杯2023年第十四届省赛真题-整数删除
三,题目
邻接表,vector,树形dp
P1352 没有上司的舞会 - 洛谷
……
四,延申
st表,树状数组,字典树,线段树…
P3865 【模板】ST 表 - 洛谷
P3374 【模板】树状数组 1 - 洛谷
P8306 【模板】字典树 - 洛谷