C++ 顺序容器(vector,list、deque,stack,queue)

顺序容器的种类有:vector,list、deque

顺序容器适配器:

stack     //先进后出   栈

queue   //先进先出   队列

priority_queue   //也优先管理级的优先队列

1.头文件

#include <vector>    
#include <list>
#include <deque>   //每一种头文件对应一种顺序容器
#include <queue>   //队列  优先队列的头文件
#include <stack>   //栈的头文件

2.定义

    vector<int>v;
    list<string> l;
    deque<struct Node>dq;
    //容器类型<容器保存的数据类型>容器名称;

3.初始化   (以vector类型为例)

    vector<T>v1;      //创建一个空的容器
    vector<T>v2(n,i);  //创建一个vector容器  其中包括n个值为i的元素
    vector<T>v3(v2);   //创建一个v3   是v2的副本
    vector<T>v4(n);   //创建一个有初始化的元素的n个副本
    vector<T>v5(v2.begin(),v2.end()-1);  //创建v5   值为索引的中间值

注意:在初始化时,不同类型的容器之间   不能进行值的初始化

注意容器的定义时   有一种特殊情况    看下面的代码“

     vector< vector<int> >v3;   //ok
     vector<vector<int> >v4;   //ok
     vector<vector<int>>v5;   //error

我们在写的时候    建议使用第一种写法   养成一个好的习惯

其实这第三种定义之所以不行   是因为它俩个>符号写在了一起   就会合成一个>>符号

4.迭代器的运算

所有迭代器都支持的运算

     *iter      //返回迭代器所指向的元素的引用
     iter->name   //获取迭代器指向元素中的name   容器中保持的是结构体  相等于(*iter).name.
    iter++(--)    //iter 加减
    ++(--)iter     //和上面一样    只存在先加减和先运算的不同
    iter1==(!=)iter2   //判断俩个迭代器所指 的元素是同一个

以下表图为string   vector   deque 类型迭代器支持的额外运算

注意:list容器只提供   上面所有迭代器都提供的运算    不能使用加减法与大小比较   (加减不同于自增自减)

原文地址:https://www.cnblogs.com/52why/p/7591386.html