c++STL
vector
vector, 变长数组,倍增的思想
size()返回元素个数empty()返回是否为空clear()清空front()/back()push_back()/pop_back()begin()/end()
支持比较运算,按字典序
#include <bits/stdc++.h>
using namespace std;
int main() {
vector<int> a;
vector<int>b(4, 3), c(3, 4);//初始化b:3 3 3 3 c:4 4 4 第一个参数是数目,第二个参数是要初始化的值
if (b < c) puts("b < c");
for (int i = 0; i < 10; i++) a.push_back(i);
for (int i = 0; i < a.size(); i++) cout << a[i] << " ";
cout << endl;
for (vector<int>::iterator i = a.begin(); i != a.end(); i++) cout << *i << " ";
cout << endl;
for (auto i = a.begin(); i != a.end(); i++) cout << *i << " ";
cout << endl;
for (auto x : a) cout << x << " ";
cout << endl;
return 0;
}
输出:
b < c
0 1 2 3 4 5 6 7 8 9
0 1 2 3 4 5 6 7 8 9
0 1 2 3 4 5 6 7 8 9
0 1 2 3 4 5 6 7 8 9
pair
pair<int, int>
first第一个元素second第二个元素
支持比较运算,以first为第一关键字,以second为第二关键字(字典序)
#include <bits/stdc++.h>
using namespace std;
int main() {
pair<int, string> p;
p = make_pair(10, "ljz");
p = {20, "abc"};
pair<int, pair<int, int>> p1;//存储三个量可以这样
return 0;
}
string,字符串
size()/length()返回字符串长度empty()clear()substr(起始下标,(子串长度))返回子串c_str()返回字符串所在字符数组的起始地址
#include <bits/stdc++.h>
using namespace std;
int main() {
string a = "ljz";
a += "abc";
a += 'c';
cout << a << "\n";
cout << a.substr(1, 2) << "\n";
cout << a.substr(1, 10) << "\n";
cout << a.substr(1) << "\n";
printf("%s\n", a.c_str());
return 0;
}
/*
输出:
ljzabcc
jz
jzabcc
jzabcc
ljzabcc
*/
queue,队列
size()empty()push()向队尾插入一个元素front()返回队头元素back()返回队尾元素pop()弹出队头元素
priority_queue,优先队列,默认是大根堆
size()empty()push()插入一个元素top()返回堆顶元素pop()弹出堆顶元素- 定义成小根堆的方式:
priority_queue<int, vector<int>, greater<int>> q;
stack,栈
size()empty()push()top()pop()
deque,双端队列
size()empty()clear()front()/back()push_back()/pop_back()push_front()/pop_front()begin()/end()
set,map,multiset,multimap
- size()
- empty()
- clear()
- begin()/end()
set/multiset
insert()插入一个数find()查找一个数count()返回某一个数的个数erase()
(1) 输入是一个数x,删除所有x O(k + logn)
(2) 输入一个迭代器,删除这个迭代器lower_bound()/upper_bound()
lower_bound(x)返回大于等于x的最小的数的迭代器
upper_bound(x)返回大于x的最小的数的迭代器
map/multimap
insert()插入的数是一个pairerase()输入的参数是pair或者迭代器find()
可以当作数组用
注意multimap不支持此操作。 时间复杂度是 O(logn)

浙公网安备 33010602011771号