数组
typeName arrayName[ayyaySize];
int ragnar[7]; //创建一个包含7个int类型的数组ragnar
创建数组的过程其实是在内存中申请了一个连续的int类型宽度的空间,用下标来代替每个元素的变量名.
赋值的方式
1.初始化数组,一个一个赋值
int ragnar[3];
ragnar[0]=1;
2.初始化数组,并全部赋值
int ragnar[3]={}; //全部赋值为0
int ragnar[3]={1,2,3};//分别赋值
int ragnar[]={1,2,3};//自动识别长度
vector
模板类vector类似于string类,也是一种动态数组.可以在运行阶段设置vector对象的长度,可在末尾附加新数据,还可以在中间插入新数据.它是new创建动态数组的替代品.实际上,vector类确实使用new和delete来管理内存,但这种工作是自动完成的.
首先,使用vector对象,必须包含头文件vector.
其次,vcetor包含在命名空间std中,因此可以使用using
编译命令/using
声明或std::vector
第三,模板使用不同的语法来支出它的存储的数据类型
第四,vector类使用不同的语法来指定元素数
vector<typeName> vt(nElem)
include <vector>
using namespace std;//创建一个0长度的vector
vector<int> vi;
vector<double> vd(10); // 创建10个double类型的vector
array
array也位于名称空间std中,与数组一样,array对象的长度也是固定的,也使用栈(静态内存分配),而不是自由存储区,因此其效率与数组相同,但更方便,更安全.
array<typeName, nElem> arr;
# include <array>
using namespace std;
array<int, 5> ai;
array<double, 4> ad = {1.1,1.2,1.2,1.3};
比较三者之间的区别
数组 | vector | array |
---|---|---|
访问方式 | 支持标准访问 | 支持标准访问 |
存储位置 | 堆 | 栈 |
复制 | 逐个复制 |
参考文献:
c++ Primer Plus