c++ vector 初始化_2.3 vector

3b518ce3d236fb01b85e8a132030f556.png

导图

9ffc50cf4937019e53330b14cd16d157.png

vector

vector是什么东东呢?就是它字面意思,向量。怎么理解呢?高中数学中我们学了能表示二维平面的中某一点的向量<x,y>,以及三维空间中表示某一点的向量<x,y,z>。到了大学,我们更加了解到<>中有多少个数字就能表示多少维度空间中的一点。c++借鉴并扩展了这个表示方法,用它来表示同种类型元素的聚集(我之所以不说是“集合”,是因为集合是元素不可重复的)。vector是STL容器的一种,因此它具有理论上存储无限元素的能力(这主要取决于内存大小的啦~)。vector涉及到模板以及一些更深的东西,但由于它的易用性及良好性能不得不提前拿出来遛一遛~

初始化

记得高中物理老师说过一句话:万变不离其宗。果然没错,认识一个类型还是得从它的初始化开始啊。vector是std命名空间 中的一员,头文件是<vector>。

# include <vector>

这里出现了T类型,这是啥玩意儿呢?这就是模板参数,现在你只用知道:只要是能够定义一个变量的类型,都可以用来替换T。比如:

vector

也就是说,vector是可以嵌套的。机智的小锅锅小姐姐们有没有发现什么神奇的东西呢?没错,就是下边这个图:

d01f410257b4e37cd7b8c9e2ecdd8920.png

如果使用一层vector你可以表示一维空间的话,那么使用嵌套vector就可以用来表示超过一维的空间!而且,这个空间还可以是非规则的,因为你可以任意改变每一层的vector的容量。

小帅翔提示
下边这两个初始化需要留意,因为他们含义不同。具体为什么后续再说明。
vector

操作

下边介绍一些超级常用的方法,学会这些方法,你就可以横着使用vector了哈哈哈哈~

首先我们声明一个vector变量v,则有:

v
如果v不含任何元素,则返回true,否则返回false
v
返回v中元素个数
v
在v尾端添加一个元素t
v
n是整型数据,和数组类似的用法,表示取出v中索引为n的元素
v1 
v1,v2相等,当且仅当他们的元素类型相同,元素个数相等,而且对应位置处的元素值相等
v
在指定的it位置插入一个元素val,it是一个迭代器
v
删除指定it位置的一个元素,it是一个迭代器
v
清空v中的所有元素

注意

不允许在循环体内做可能改变vector大小的操作。切记!

迭代器初步

上边有两个方法使用到了迭代器,那什么是迭代器呢?迭代器其实是一种设计模式,具体是什么现在还不用管那么多,鲁迅先生说过:曾经有一个很好的遍历容器的方法摆在我面前,但我没有珍惜,而是直接拿来使用了。哈哈哈哈哈。

6797750616ffec1aac654b7f70d6e04a.png
小帅翔提示
迭代器的使用和指针类似,使用“->”访问被指向对象的成员,使用“*”解引用。

想要获取vector的迭代器,很简单:

vector

说明

  • end()操作的设计是为了迭代方便
  • 可以使用“++”来更改迭代器指向下一位置
  • 迭代器也可以与整数进行加减运算,表示移动迭代器到一个新位置
//正向遍历vec中的元素,end()作为遍历结束标志

小结

  • vector是增强版的数组,但不是所有使用数组的地方都应该使用vector;
  • 迭代器的设计是面向接口编程的很好的产物,所以不要问为什么有指针了还需要迭代器;
  • 第二章完结撒花,下期做一个小程序体验一波编程之美~划重点!!划重点!!!
  • 听说一键三连会刺激小帅翔的多巴胺分泌哦~

6bb3236c45c582a7ea9d9a187c04b8a8.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值