泛型顺序容器

介绍:泛型顺序容器有以下三种

#include <list>
#include <deque>
#include <vector>

定义

共有5中定义顺序容器对象的方式

  1. 产生空容器
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均指向最后一个删除元素的下一个位置 **

posted @ 2023-08-01 09:41  NaCl。  阅读(21)  评论(1)    收藏  举报