STL库简介、常见使用方式与练习

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(); // 检查q是否为空,若为空返回true,否则返回false

迭代器遍历

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() 删除末尾值
1
sort

2.set (unordered_set, multiset)

P1059 明明的随机数 - 洛谷

1
insert()     它将新元素插入到迭代器指向的位置之前
1

3.map (unordered_map, multimap)

P1097 统计数字 - 洛谷

1
map<string, int> mp;
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); //将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() //查询堆是否为空,为空则返回true否则返回false
q.size() //查询堆内元素数量

priority_queue<Type, Container, Functional>

1
2
3
4
5
// 头文件:#include<queue>
priority_queue<int> q; //默认是大根堆q (第一个值为最大值)
priority_queue<int,vector<int>,less<int> >q; //这是一个大根堆q
priority_queue<int,vector<int>,greater<int> >q; //这是一个小根堆q
//注意某些编译器在定义一个小根堆的时候greater<int>和后面的>要隔一个空格,不然会被编译器识别成位运算符号>>

单调队列:

P1886 滑动窗口 /【模板】单调队列 - 洛谷

单调栈:

830. 单调栈 - AcWing题库

二,数据结构

数组模拟:单链表,双链表

B3631 单向链表 - 洛谷

1

蓝桥杯2023年第十四届省赛真题-整数删除

1

三,题目

邻接表,vector,树形dp

P1352 没有上司的舞会 - 洛谷

……

四,延申

st表,树状数组,字典树,线段树…

P3865 【模板】ST 表 - 洛谷

P3374 【模板】树状数组 1 - 洛谷

P8306 【模板】字典树 - 洛谷


STL库简介、常见使用方式与练习
https://leaf-domain.gitee.io/2024/01/17/stlStruct/
作者
叶域
发布于
2024年1月17日
许可协议