1.

vector

特点可变大小数组, 适合随机访问

deque

双端队列: 适合随机访问

list

双向链表: 任何位置insert,delete. 

forward_list: 单向链表

array:普通数组

string: 随机访问. 尾部插入删除

连续存储: string, vector, array

链接:list, forward_list

2.迭代器

是个智能指针指向某个容器元素. 可以方便遍历容器,访问容器

反向迭代器:顺序相反

 

3.容器复制操作:相同容器类型之间

直接赋值初始化方式复制

迭代器范围复制

4.容器赋值.

直接赋值

assign方法:可以用于不同类型之间,配合迭代器. list.assgin(vector.begin(),vector.end())

 

5.交换

swap()方法和函数,除了string, 使得数据未变,但是属于不同容器, 迭代器指向的内容不变

6.容器大小

>, >=,<,<= 操作数是相同类型

7.添加元素

push_back(), push_front(), insert(p,t) insert(p,n,t) t可以是{1,2}之类的序列, 成功返回第一个添加的元素的迭代器

8.访问

.back(), .front() ,[n], at(n) (越界检查)

返回该元素的引用

9.删除.

pop_front, pop_back(),clear(),erase(p) 删除迭代器指向的元素

.erase(p1,p2) 删除迭代器这个范围

10.vector

在内存中连续存储. 创建时申请的内存多于实际大小以便拓展. 内存满了后需要重新申请内存并复制数据然后释放以前内存

size()  已使用量

capacity() 总容量

reserve(10) 添加预留容量

 

11.string

substr(pos,n)

append()

replace(pos,repsize,newstring)

find() 返回下标

lowercase()转为小写

compare 与strcmp类似

to_string(int)

stod(s) string->浮点数

stoi(s)

....

12. stack

自定义构成:

stack<int,vector<int>> int类型栈,由vector实现

操作:push(),pop(),top()

 

13.quque

自定义构成:

quque<int,vector<int>> int类型栈,由quque实现

操作:pop(),front(),back()