容器类
#include<list>
#include<deque>
#include<array>
#include<forward_list>
#include<string>
第一类:list和deque
deque<int>m;
list<int>n;//注意由于list是链表只能单个++不能跨越多个长度比如+=2不可以
//在首尾位置添加元素
n.push_back();
m.push_back();
n.push_front();
m.push_front();
//在中间添加数
m.insert(iter,1);//在iter指针之前添加1
m.insert(iter, 10, -1);//在iter指针之前添加十个-1,返回添加中的元素中第一个元素的指针
m.insert(iter, iter1, iter2);//在iter之前,添加[iter1,iter2)之间的数
//在首尾位置删除数
m.pop_back();//删除最后一个元素
m.pop_front();//删除第一个元素
第二类:string以及vector
string<char>m
vector<int>n
//无法在首元素位置添加或者删除元素
vector<int>n
auto i=n.begin()
int y
while (cin >> y)
{
i = n.insert(i, y);
}
//但可以通过insert反复在首尾添加元素
push_back
pop_back
//可以在最后添加或者删除元素
erase(iter)//删除iter元素
erase(iter1,iter2)//删除[iter1,iter2)之间的元素,返回一个指向最后一个被删元素之后的元素
//删除元素
第三类:forward_list
before_begin()//返回首元素之前的一个指针
insert_after(iter)//在iter之后(注意跟其他两类的insert做对比)添加元素,同样有一样的三种添加方式,返回添加元素的下一位置的指针
erase_after(iter)//删除iter之后的元素返回最后一个被删除元素后面一个元素的指针
forward_list没有--,没有back
总的来说
insert,erase对于第一类第二类通用
n.back()//返回尾元素的引用
m.front()//返回首元素的引用
对于添加删除更改元素,都会使指针,引用,迭代器失效,所以每次添加或删除元素后都要重新定义引用,迭代器,指针