1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100
| vector,变长数组,倍增的思想 size() 返回元素个数 empty() 判断是否为空 clear() 清空 front()/back() push_back()/pop_back() begin()/end(); 支持比较运算 pair<int,int> 存储一个二元组 first,第一个元素 second,第二个元素 支持比较运算,以first为第一关键字,以second为第二关键字(字典排序) 可以使用pair<int,pair<int,string>> 存储三个数
string,字符串, substr(a,b), 返回从a开始,返回b个字符 c_str() 返回起始地址 size()/length() empty() clear() queue,队列 , queue<int> q size() empty() push(), 队尾插入一个元素 front(),返回队头元素 back(),返回队尾元素 pop(), 弹出队头元素 priority_queue,优先队列,默认是大根堆 priority_queue<int> heap push(),插入一个元素 top(), 返回堆顶元素 pop(); 弹出堆顶元素 stack,栈, size() empty() push(), 栈顶插入一个元素 top(), 返回栈顶元素 pop() 弹出栈顶元素 deque,双端队列,deque<int> q 效率低 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 set中没有重复的数,mul可以有重复的数 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() 插入的数是一个pair erase() 输入的参数是pair或者迭代器 find() 可以像数组一样用map lower_bound()/upper_bound() unordered_set,unordered_map,unordered_multiset,unordered_multimap,哈希表 和上面类似,增删改查时间复杂度是 O(1) 不支持lower_bound()/upper_bound() bitset,压位 bitset<10000> S; ~,&,|,^ >>, << ==, != count() 返回有多少个1 any() 判断是否至少有一个1 none() 判断是否全是0 set() 把所有位置变为1 set(k,v) 将第k位变成v reset() 把所有位变为0 flip() 等价于~ flip(k) 把第k位取反
|