每次忘记都去查,真难啊
1 /*
2 C/C++解题常用STL大礼包 含vector,map,set,queue(含优先队列) ,stack的常用用法
3 */
4
5 /*
6 vector常用用法
7 */
8 //头文件
9 #include<vector>
10
11 //常用的初始化方法
12 vector<int> v; //直接定义一个整型元素的向量 且未声明长度,其中int的位置可以换成别的数据类型或者结构体等
13 vector<int> v(10); //定义了10个整型元素的向量,其中每一个数都没有初值
14 vector<int> v(10, 5); //定义了10个整型元素的向量,并且为每个元素赋初值5
15
16 //常用的操作
17 v.back(); //返回最后一个元素
18 v.front(); //返回第一个元素
19 v.clear(); //清空v中的元素
20 v.empty(); //判断v是否为空,空则返回true,否则false
21 v.push_back(5); //在最后的一个元素后插入5
22 v.size(); //返回v中的元素的个数
23
24 sort(v.begin(), v.end(), cmp); //sort排序,其中cmp部分与结构体等数据类型自定义排序时cmp相同用法
25
26 for(int i = 0; i < v.size(); i++){ //遍历
27 printf("%d\n", v[i]);
28 }
29
30 /*
31 map常用用法
32 */
33 //头文件
34 #include<map>
35
36 //常用操作
37 map<int, int> m; //初始化
38 m[1] = 5; //以数组形式插入值
39 m[2] = 6;
40 m[1]++; //可以参与运算
41 m[2] += 2;
42 cout<<m[1]<<endl;
43 cout<<m[2]<<endl;
44
45 /*
46 set常用用法 set中的元素自动从小到大排序,且合并重复元素
47 */
48 //头文件
49 #include<set>
50
51 //常用操作
52 set<int>s; //定义
53 s.insert(x); //插入数值
54 s.clear(); //删除set容器中的所有的元素
55 s.empty(); //判断set容器是否为空
56
57 set<int>::iterator it; //遍历
58 for(it = s.begin(); it != s.end(); it++)
59 {
60 printf("%d\n", *it);
61 }
62
63 //s.end()没有值
64 cout<<"s.begin() "<<*s.begin()<<endl;
65 //lower_bound()--返回指向大于(或等于)某值的第一个元素的迭代器
66 cout<<"lower_buond 3 "<<*s.lower_bound(3)<<endl;
67 //upper_bound()--返回大于某个值元素的迭代器
68 cout<<"upper_bound 3 "<<*s.upper_bound(3)<<endl;
69 //find()--返回一个指向被查找到元素的迭代器
70 cout<<"find(3) "<<*s.find(3)<<endl;
71 cout<<"s.size() "<<s.size()<<endl;
72
73 /*
74 queue常用用法
75 */
76 //头文件
77 #include<queue>
78
79 //常用操作对于普通队列来说
80 queue<int> q; //定义一个队列
81 q.front(); //获取队首元素
82 q.pop(); //删除队首元素
83 q.empty(); //判断队列是否为空
84 q.push(5); //向队列中加入元素
85
86 //priority_queue
87 priority_queue<int> q; //定义一个优先队列
88 q.top(); //获取队列中最大元素(首个)
89 q.pop(); //删除最大元素(队首)
90 q.push(x); //向队列中加入元素
91 q.empty(); //判断优先队列是否为空
92
93 //对于结构体而言,需要重载小于号(优先队列按照从大到小排序)
94 priority_queue<Node> q;
95
96 struct Node{
97 int a, b;
98 bool operator < (const Node & x) const
99 {
100 return a > x.a;
101 }
102 };
103
104 /*
105 stack常用用法
106 */
107 //头文件
108 #include<stack>
109
110 //常用操作
111 stack<int> s; //定义一个栈
112 s.pop(); //删除栈顶元素
113 s.top(); //获取栈顶元素
114 s.empty(); //判断栈是否为空
115 s.push(5); //向栈中压入5