vector
vector<int> a(b,c);
vector<int> a[n];
a.size() 返回数组元素的个数
a.empty() 返回a是否为空(true)
a.clear() 清空数组
a.front() 返回第一个数
a.back() 返回最后一个数
a.push_back() 向最后插入一个数
a.pop_back() 把最后一个数删掉
[]
begin() 第0个数的位置
end() 最后一个数的后面一个位置
for(int i=0;i<a.size();i++)
for(vector<int>::iterotor i=a.begin();i!=a.end();i++)
for(auto x:a)
按照字典序比较
pair
pair<int,string> p;
pair<int,pair<int,int>> p;
p = make_pair(10,"abc");
p = {10,"abc"}
p.first 取得第一个元素
p.second 取得第二个元素
按字典序比较,以first为第一关键字,以second为第二关键字
string
string s;
s += "abc"
s.size() s.length()
s.enmpty()
s.clear()
s.substr(起始位置,子串长度)
printf("%s",s.c_str());
queue
queue<int> q;
q.size()
q.empty()
q.push() 向队尾插入一个元素
q.back() 返回队尾元素
q.front() 返回队头元素
q.pop() 弹出队头元素
q=queue<int>();
priority_queue
priority_queue<int> p;
priority_queue<int,vector<int>,greater<int>> heap;
p.push() 插入一个元素
p.top() 返回堆顶元素
p.pop() 弹出堆顶元素
stack
stack<int> s;
s.size()
s.empty()
s.push() 向栈顶插入一个元素
s.pop() 弹出栈顶元素
s.top() 返回栈顶元素
deque 双端队列
deque<int> d;
d.size()
d.empty()
d.clear()
d.front() 返回第一个元素
d.back() 返回最后一个元素
d.push_back() 向最后插入一个元素
d.pop_back() 弹出最后一个元素
d.push_front() 向队首插入一个元素
d.pop_front() 弹出队首元素
[] 随机寻址
begin()
end()
set/multiset
set<in> s;
multiset<int> ms;
s.size()
s.empty()
s.claer()
s.insert()
s.find()
s.count()
s.erase()
lower_bound(x)
upper_bound(x)
begin()
end()
map/multimap
map<string,int> m;
s.size()
s.empty()
s.claer()
m.insert()
m.earse()
m.find()
[]
begin()
end()
unordered_set/unordered_map/unordered_multiset/unordered_multimap
和上面类似,增删改查的时间复杂度都是O(1)的
不支持lowered_bound() 和 upper_bound()
bitset压位
bitset<100000> s
~ & | ^ >> << == !=
[]
s.count()
s.any()
s.none()
s.set()
s.set(k,v)
s.reset()
s.flip()
s.flip(k)