关于vector动态数组的初始化及其部分使用误区

简介

vector 就是一个不定长的数组,它封装了一些常用的操作,定义时可以用vector< int >a,表示a是一个vector数组。a.size()可以访问数组的长度,a.resize()可以改变它的大小,a.push_back()可以向其尾部增加元素,而a.pop_back()则是删除其尾部元素。
vector是一个模板类,同时vector还可以嵌套另一个vector数组表示成一个二维数组的形式,这在一些数据范围较大的题内很有用处。
比如普通一维数组开大于 1 0 9 10^{9} 109的长度就会报错,二维是 1 0 5 10^{5} 105,这时用动态数组就可以了。

初始化

vector<int>a(100);

这句是将a数组的长度初始化为100,这是通过构造函数来实现的,还有其它许多构造函数,下面一一举例。

vector<int>a(100,1);

这样是将内部的100个元素全部初始化为1.

vector<int>a(100,1);
    vector<int>b(a);

其中b是拷贝构造函数。

使用误区

许多初学者(包括我)在使用时都直接将它当成了正常的数组来使用,但他们是不完全一样的,vector是动态数组,使用前是需要给它分配空间的,跳过分配空间这一步的话,编译器不会报错,但会无法运行,如果用它提交程序的话会显示runtime error。
正确的做法是利用其内部的构造函数来对它分配空间,或者选择push_back()这一函数,分配完空间后动态数组就和正常数组无异啦。

在题目中的一些感悟

起初以为它毫无利用价值,到现在发现其功能真的非常强大,不过因为内存分配这个问题让我RE了好多次才发现是这的问题,特意去搜了资料,所有问题都要追根溯源嘛,了解它的构造,认识到它的本质才能熟练掌握。加油!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值