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
|
vector动态数组{ size() empty() claer()... vector<int> a(10,3); 遍历方式: vector<int>::iterator it; for(auto x:a) ... 支持比较运算,按字典序比较大小 }
pair{ 可以存储一个二元组pair<int,int> p.first,p.second分别取第一个第二的元素 支持比较运算,按照字典序,以first为第一关键字,second为第二关键字 p=make_pair(a,b) p={a,b} }
string字符串{ c_str() 如果使用printf("%s",p.c_str()); }
queue 队列 priority_queue(优先队列/堆){ 改成小根堆: 1.插入负数 2.priority_queue<int,vector<int>,greater<int>> heap; push(); 插入 top(); pop(); } stack 栈 deque(双端队列,效率低) set,multiset{ set/multiset: insert() find() count返回某个数的个数 erase() (1)erase(x),删除所有这个数 (2)erase(it),删除此迭代器 lower_bound(x)返回大于等于x的最小的数 upper_bound(x)返回大于x的最小的数 }
map,multimap 基于平衡二叉树(红黑树)实现,动态维护有序序列{ insert(); 插入的是pair erase(); 输入的参数是pair或者迭代器 [] 映射,O(logn) }
(哈希表){ unordered_set unordered_map unordered_multiset unordered_multima } bitset(位存储,状态压缩){ bool a[1024]=1024B,bitset<1024>=128B count() 返回有多少个1 any() 判断是否至少有一个1 none() 是否全为0 set() 把多有位置变成1 set(k,v) 把第k位变成v flip() 等价于~ flip(k) 等价于把第k位取反 }
|