泛型顺序容器
介绍:泛型顺序容器有以下三种
#include <list>
#include <deque>
#include <vector>
定义
共有5中定义顺序容器对象的方式
- 产生空容器
list<string>slist;
vector<int >ivec;
2,产生特定大小的容器(每个元素都默认初始化)
list<int>ilist(1024);
vector<string>svec(32);
3,产生特定大小的容器(自定义每个元素的初值)
vector<int>ivec2(10,-1);//每个元素默认都为-1
auto iter=ivec2.begin();
while (iter!=ivec2.end()){
cout<<*iter<<" ";
iter++;
}
输出结果如下
-1 -1 -1 -1 -1 -1 -1 -1 -1 -1
4.通过一对儿iterator产生容器。这对iterator用来表示一整组作为初值的元素的范围
int arr[]={1,2,3,4,5,6,7,8};
vector<int>ivec2(arr,arr+8);//arr代表数组的首地址,加上8得到末尾元素的后一个
5.根据某个容器产生出新容器。复制原容器内的元素,作为新容器的初值:
list<string>slist;
list<string >slist2(slist);
插入操作
对于vector,list,deque都有push_back(),pop_back(),前者在容器末尾增添一个元素,后者删除容器末尾的最后一个元素(二者都是无返回值类型,要想得到他们的开头和结尾的元素可以使用front()和back()),除了vector外,另外两者还有push_front()和pop_front()的操作(这俩操作对于list和deque来说都是常数时间)
通用插入操作
.iterator insert(iterator position,elemType value);
可以将value插入position之前
例子
int arr[]={1,3,5,7,9};
vector<int>iv(arr,arr+5);
auto iter=iv.begin();
while (iter!=iv.end()){
if(*iter>=6){
iv.insert(iter,6);
break;
}
iter++;
}
if(iter==iv.end())iv.push_back(6);
for(iter=iv.begin();iter!=iv.end();iter++){
cout<<*iter<<" ";
}
结果
1 3 5 6 7 9//把6插入到了7之前
插入操作还有几种别的变形情况,可以看书
删除操作
pop_front()和pop_back()是两类特殊的删除操作,每个容器也有通用的删除操作
erase()
1.iterator erase(iterator position);
作用:删除position指向的元素
2.iterator erase(iterator first,iterator last);
作用: 删除[first,last)之间的元素,注意前闭后开
** 两个函数删除后返回的iterator均指向最后一个删除元素的下一个位置 **

浙公网安备 33010602011771号