• STL-vector容器


    vector容器简介

    vector是将元素置于一个动态数组中加以管理的容器

    vector可以随机存取元素(支持索引值直接存取,用[]操作符或at()方法)  at会抛出异常

    vector尾部添加或删除元素非常快。但是在中部或者头部插入元素或移除元素比较费时

    vector对象的默认构造

     vectorvecT;                //采用模板类实现,vector对象的默认构造形式

     举例:

     vector         vecint;               //一个存放int的容器

     vector      vecFloat;           //一个存放float的vector容器

     vector    vecString;          //一个存放string的vector容器

     对于类(自定义数据类型)://注意深拷贝和浅拷贝的问题

    Class A{};

    vectorpvecA;                        //用于存放A对象的指针vector容器

    vector   vecA;                        //用于存放A对象的vector容器

    容器元素的存放是按值复制的方式进行的,所以此时A必须提供A的拷贝构造函数,以保证A对象间拷贝正常。

    vector对象的带参构造

    vector(begin,end);                              //左闭右关[begin,end)

    vector(n,elem);                                   //构造函数将 n 个 elem拷贝给本身

    vector(const vector &vec);                 //拷贝构造函数

    vector的赋值

    vector.assign(beg,end);                            //将[beg,end)区间中的数据拷贝赋值给本身

    vector assign(n,elem);                              //将n个elem拷贝赋值给本身

    vector& operator=(const vector &vec);     //重载等号操作符

    vector.swap(vec);                                      //将vec与本身的元素互换

    vector的大小

    理论知识

    vector.size();                                              //返回容器中元素的个数

    vector.empty();                                           //判断容器是否为空

    vector.resize(num);                                     //重新指定容器的长度为num,

                                                                          若容器变长则以默认值(0)填充新位置,

                                                                          如果变短则删除末尾部分

    vector.resize(num,elem);                            //重新指定容器的长度为num,

                                                                          若容器变长,则以elem值填充新位置

                                                                          如果变短则删除末尾部分

    vector末尾的添加移除操作

    vector.push_back(elem);

    vector.pop_back(elem);

    vector的数据存取   

    vec.at(index);                //返回索引 index 所指向的数据,如果idx越界,抛出out_of_range异常

    vec[index];                    //返回索引 index 所指向的数据,越界时,直接报错

    vector的插入

    vector.insert(pos,elem);                //在pos位置插入一个elem元素的拷贝,返回新数据的位置

    vector.insert(pos,n,elem);             //在pos位置插入n个elem数据

    vector.insert(pos,beg,end);           //在pos位置插入[beg,end)区间的数据

    vector的删除

    //移除容器的所有数据

    vector.clear();                                     

    //删除[beg,end)区间的数据,返回下一个数据的位置(需要注意迭代器失效问题)

    vector.erase(beg,end); 

    //删除pos位置的数据,返回下一个数据的位置(需要注意迭代器失效问题)

    vector.erase(pos);        

  • 相关阅读:
    【luogu P3249】【LOJ 2052】矿区(对偶图)(dfs)
    浅摇自动化测试
    元数据Metadata到底有什么用
    微服务注册中心:Eureka详解
    面试突击31:什么是守护线程?它和用户线程有什么区别?
    Chapter9.4:线性系统的状态空间分析与综合(上)
    推特的算法规则你知道多少?
    软考系列(系统架构师)- 2012年系统架构师软考案例分析考点
    (ACM模式时)C++的输入输出需要注意的点
    【Spring】AOP的三种方式
  • 原文地址:https://blog.csdn.net/weixin_46120107/article/details/126112061