1.string

2.list

  • list是一个类似于双向循环链表的容器,因此具有链表的快速插入,删除的优点。list的每个节点有三个域:前驱元素指针域、数据域和后继元素指针域。此外,头节点的前驱元素指针域保存的是链表中尾元素的首地址,list的尾节点的后继元素指针域则保存了头节点的首地址,这样,list实际上就构成了一个双向循环链。同时,链接的节点不在一块连续的内存空间,只能通过迭代器list<数据类型>::iterator it的it++,it—操作移动遍历
  • list()listL; 声明一个空列表;

listL (n); 声明一个有n个元素的列表,默认值0
listL (n,val) ;声明一个由n个元素的列表,每个元素都是由其复制构造函数T(val)得来的
listL (arr.begin(),arr.end());
listL (l1); 用链表l1初始化新链表

  • image.png | 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

[

](https://blog.csdn.net/fanyun_01/article/details/56881515)