vector<变量>,变长数组,倍增思想
vector<int> a(10,3); 容量为10的向量,其中元素均为3
size() 返回元素个数
empty() 判空
clear() 清空
front()/back() 第一个/最后一个元素
push_back()/pop_back() 向最后插入一个元素/删除最后一个数
begin()/end() 迭代器
支持比较运算(按字典序比较)
vector<int> a(4,3),b(3,4)
a < b;
[] 随即存取
遍历方法
for(int i = 0;i < 10;i++)
a.push_back();
for(int i = 0;i <a.size();i++)
cout<<a[i]<" ";
for(vectoe<int>::iterator/auto i = a.begin();i != a.end();i++)
cout<<a[i](*i)<<" "
for(auto x : a)
cout<<x<<" ";
pair<变量,变量> 可以存储一个二元组
pair<int,int> a
第一个元素为 a.first 第二个元素为 a.second
支持比较运算(first为第一关键字,second为第二关键字)
pair<int,string> p;
p = make_pair(10,"aaa");/p = {20,"aaaa"};
也可以 pair<int,pair<int,int> >p;可以用来存储三个东西
string,字符串
size()/length()
empty()
clear()
字符串连接可以直接用 +
string a = "ab";
a += "cd"; a = abcd;
substr(n,m) 字符串下标从a开始长度为m的字串(若超出字符串长度,输出到最后一个字符为止)
a.substr(1,2); bc
a.substr(1,5) bcd
a.substr(1) bcd
a.c_str 返回字符串a的起始地址
queue<变量> 队列
push() 在队尾插入一个元素
pop() 删除队首
front() 获取队首
back() 获取队尾
empty() 判空
priority_queue<变量> 优先队列(堆),默认大根堆
size()
empty()
push() 插入一个元素
pop() 删除堆顶元素
top() 返回堆顶元素
获取小根堆的方法
1.push(-x)
2.priority_queue<int,vector<int>,greater<int>> heap
stack<变量> 栈
size()
empty()
push() 往栈顶插入一个元素
pop() 弹出栈顶
top() 获取栈顶
deque,双端队列
size()
empty()
clear()
front()
back()
push_back()/pop_back()
push_front()/pop_front()
[] 随机存取
begin()/end()
set,multiset,map,multimap
size()
empty()
clear()
begin()/end() ++ -- 返回前驱 后继
set,不允许有重复元素/multiset,允许有重复元素
insert() 插入一个数
find() 查找一个数(如果不存在,返回end())
count() 返回某一个数的个数
erase()
1.输入的是一个数x,删除所有的x O(k + logn)k是x的个数
2.输入的是一个迭代器,删除这个迭代器
lower_bound(x) 返回大于等于x的最小的数的迭代器 (如果不存在,返回end())
upper_bound(x) 返回大于x的最小的数的迭代器 (如果不存在,返回end())
map\multimap
insert() 插入的是一个pair
erase() 输入的参数是pair或者迭代器
find()
[] 随机存取 O(logn)
map<string,int> a;
a["aaa"] = 1;
lower_bound(x) 返回大于等于x的最小的数的迭代器 (如果不存在,返回end())
upper_bound(x) 返回大于x的最小的数的迭代器 (如果不存在,返回end())
unordered_set,unordered_multiset,unordered_map,unordered_multimap
和上面类似,增删改查的时间复杂度是O(1)
不支持 lower_bound(x)/upper_bound(x),迭代器的++,--(与排序有关的操作都不支持)
bitset,压位(八分之一空间)
bitset<10000> s;
~,&,|,^
>>,<<
==,!=
[]
count() 返回有多少个1
any() 判断是否至少有一个1
none() 判断是否全为0
set() 把所有位置为1
set(k,v) 将第k位变成v
reset() 把所有位置0
flip() 等价于~
flip(k) 把第k位取反
01-04
06-02
06-02
06-02
06-02
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交