1.string
2.list
- list是一个类似于双向循环链表的容器,因此具有链表的快速插入,删除的优点。list的每个节点有三个域:前驱元素指针域、数据域和后继元素指针域。此外,头节点的前驱元素指针域保存的是链表中尾元素的首地址,list的尾节点的后继元素指针域则保存了头节点的首地址,这样,list实际上就构成了一个双向循环链。同时,链接的节点不在一块连续的内存空间,只能通过迭代器list<数据类型>::iterator it的it++,it—操作移动遍历。
- list()list
L; 声明一个空列表;
list
list
list
list
-
| L.begin(); L.end(); | 返回指向list的第一个元素的迭代器; 返回指向list的末尾元素的迭代器 |
| —- | —- |
| L.rbegin();L.rend(); | 反向迭代器,分别指向尾,首元素的前一个位置;rbegin() ++可到rend()实现逆序输出 |
| L.clear(); | 删除所有元素 |
| L.empty(); | 如果list是空的则返回true |
| Lst1.front(); L.back(); | 获得list头,尾元素 |
| L.push_back() ; L.push_front(); | 分别在list的尾部,头部添加元素 |
| L.pop_back() ;L.pop_front() | 分别在尾部,头部删除一个元素 |
| L.size(); L.sort(); | 返回list中的元素个数 ; 给list排序 |
| L.resize(n); L.assign(n,val); | 重新改变list的大小 ; 给list赋值为n个val |
| L.insert(); | 插入 |
| L.erase(L.begin()) | 删除指定元素,里面参数是迭代器 |
| L.reverse(); | 逆置 |
|
L.remove(val);|按值删除元素,并不是真正删除,只是指向的指针前移了,慎用!|
3.vector
vector相当于一个自动扩容的动态数组,可以随机访问。
1.push_back 在数组的最后添加一个数据 2.pop_back 去掉数组的最后一个数据 3.at 得到编号位置的数据 4.front 得到数组头的引用 5.back 得到数组的最后一个单元的引用 6.max_size 得到vector最大可以是多大 7.capacity 当前vector分配的大小 8.size 当前使用数据的大小 9.resize 改变当前使用数据的大小,如果它比当前使用的大,者填充默认值 10.reserve 改变当前vecotr所分配空间的大小 11.find(a.begin(),a.end(),10);//从指定范围查找元素=10并返回迭代器,需要algorithm头文件
4.map(哈希表)
引用自链接https://blog.csdn.net/sevenjoin/article/details/81943864 https://blog.csdn.net/Destiny_shine/article/details/104291888
基于红黑树实现的:set、multiset、map、multimap,键值有序,set,map不可重复,插入、删除、查找复杂度O(logN)
基于哈希表(链地址法的哈希表)实现的: unordered_set,unordered_map,unordered_multiset,unordered_multimap键值无序,插入、删除、查找平均为O(1),最坏为O(N)
5.queue
6.stack
[