学习C++ - 向量(vector)!你今天努力了吗?

一、向量的介绍

       向量 vector 是一种对象实体, 能够容纳许多其他类型相同的元素, 因此又被称为容器。 与string相同, vector 同属于STL(Standard Template Library, 标准模板库)中的一种自定义的数据类型, 可以广义上认为是数组的增强版。

       在使用它时, 需要包含头文件 vector,#include

       vector 容器与数组相比其优点在于它能够根据需要随时自动调整自身的大小以便容下所要放入的元素。此外, vector 也提供了许多的方法来对自身进行操作。


二、向量的声明及初始化

       vector 型变量的声明以及初始化的形式也有许多, 常用的有以下几种形式:

       除此之外, 还可以直接使用数组来初始化向量:


三、元素的输入及访问

       元素的输入和访问可以像操作普通的数组那样, 用cin>>进行输入, cout<这样进行输出:

    示例:

       在元素的输出上, 还可以使用遍历器(又称迭代器)进行输出控制。在 vector b(a.begin(), a.begin()+3) ; 这种声明形式中, (a.begin()、a.begin()+3) 表示向量起始元素位置到起始元素+3之间的元素位置。(a.begin(), a.end())则表示起始元素和最后一个元素之外的元素位置。

       向量元素的位置便成为遍历器, 同时, 向量元素的位置也是一种数据类型, 在向量中遍历器的类型为: vector::iterator。 遍历器不但表示元素位置, 还可以再容器中前后移动。

       在上例中讲元素全部输出部分的代码就可以改写为:


       *t 为指针的间接访问形式, 意思是访问t所指向的元素值。


四、向量的基本操作

    1>.a.size()    //获取向量中的元素个数

    2>.a.empty()    //判断向量是否为空

    3>.a.clear()    //清空向量中的元素

    4>.复制

              a = b ;//将b向量复制到a向量中

    5>.比较

              保持==!=>>=<<=的惯有含义 ;        

              如:a == b ;//a向量与b向量比较, 相等则返回1

    6>.插入 - insert

              ①、a.insert(a.begin(), 1000);   //将1000插入到向量a的起始位置前

              ②、a.insert(a.begin(), 3,1000) ;   //将1000分别插入到向量元素位置的0-2处(共3个元素)       

              ③、 vector a(5,1) ;

                       vector b(10) ;

                       b.insert(b.begin(), a.begin(), a.end()) ;        //将a.begin(), a.end()之间的全部元素插入到b.begin()前

    7>.删除 - erase

              ①、b.erase(b.begin()) ;                    //将起始位置的元素删除

              ②、b.erase(b.begin(), b.begin()+3) ;  //将(b.begin(), b.begin()+3)之间的元素删除

    8>.交换 - swap

              b.swap(a) ;//a向量与b向量进行交换


五、二维向量

       与数组相同, 向量也可以增加维数, 例如声明一个m*n大小的二维向量方式可以像如下形式:

vector< vector > b(10, vector(5));    //创建一个10*5的int型二维向量

       在这里, 实际上创建的是一个向量中元素为向量的向量。同样可以根据一维向量的相关特性对二维向量进行操作。

:

       同样, 按照这样的思路我们还可以创建更多维的向量, 不过维数太多会让向量变得难以灵活控制, 三维以上的向量还需酌情使用。

       “我是一名从事了10年开发在退休边缘垂死挣扎的高龄程序员,最近我花了一些时间整理了一个完整的学习C语言、C++的路线,项目源码和工具。对于想学习C/C++的小伙伴而言,学习的氛围和志同道合的伙伴很重要,笔者推荐我专栏的C语言/C++编程爱好者的聚集地>>>C语言/C++进阶之路 - 专题 - !

       欢迎初学和进阶中的小伙伴。希望你也能凭自己的努力,成为下一个优秀的程序员。工作需要、感兴趣、为了入行、转行需要学习C/C++的伙伴可以一起学习!”

       喜欢小编的记得动动您的小指点个关注哟!最后分享一张C/C++编程学习路线图给爱学习的小伙伴们

你可能感兴趣的:(学习C++ - 向量(vector)!你今天努力了吗?)