文章标题
2016-12-28 22:10
197 查看
容器类
#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()//返回首元素的引用
对于添加删除更改元素,都会使指针,引用,迭代器失效,所以每次添加或删除元素后都要重新定义引用,迭代器,指针