C++标准库封装的vector数组
前言:
如果构建基本类型的数组或者自定义类型的数组,那么需要自己扩展数组的功能,还有很多需要自己解决的问题,比如需要防止数组越界问题。此时,可以采用C++标准库提供的vector模板,vector创建的对象包含众多封装好的函数,比如“对象名.size()”函数可以很方便的查看数组的大小。下面从定义、使用、做函数引用等方面分别进行记录,并讨论vector
对象和数组的区别。
1、创建和使用vector对象
vector对象的创建和使用语法如下:
/// 创建
vector<类型>对象名(数组长度, 元素初值)/// 取元素
对象名[下标]/// 使用对象的函数
对象名.函数名()
创建vector
对象需要指定的“类型”可以是基本数据类型或者是类类型,如果是基本数据类型可以使用固定数值进行初始化(所有元素的初值只能相同);如果“类型”是类类型,那么就会调用“默认构造函数”进行初始化。下面第一个例子为基本数据类型作为vector元素的例子:
/// 构建vector对象,指定数组长度为3,初值为666 vector<int>data(3, 666); /// 取元素 printf("%d \n", data[1]); /// 调用vector对象的函数 printf("%d \n", data.size());
第二个例子是类类型的情况,此时将会调用类的默认构造函数,用于初始化:
/// 自定义的Duck类 class Duck { public: /// 默认构造函数 Duck() { duckAge = 666; } int duckAge; }; /// 创建Duck类型的vector对象 vector<Duck>ducks(3); /// vector的元素为Duck对象,可以调用Duck对象的成员 printf("%d \n", ducks[1].duckAge);
2、vector对象的引用
vector对象和其它类型的对象在引用的定义和使用的规则相同,都采用先声明引用,再将引用指向某个对象,最后通过引用操作对象。
下面是声明vector类型的引用语法:
vector <类型名>&引用名;
使用引用作为函数参数时,最好定义常引用,防止对象被意外的更改:
void vectorSize(vector<int>&vec) { printf("%d \n", vec.size()); }