一、数组
这里不再细说。数组不可以使用变量来规定数组的长度。
二、模板类vector
他类似于string类,也是一种动态数组。可以自己在运行时设置数组长度,也可以添加元素,插入元素。vector使用new和delete来操作内存,但是是自动完成。
#include <vector>
...
using namespace std;
int main()
{
int n;
cin>>n;//通过输入获取数组长度
vector<double> v(n);//创建了n个长度的double类型模板
v[0]=32.2;
return 0;
}
使用:
vector v (length);
三、模板类array
array的数组是固定长度的。不是动态的。和普通数组一样面试用栈(静态内存分配)来存储,而不是自由存储区,因此效率和普通数组一样,但是更安全,更方便。
#include<array>
...
using namespace std;
int main()
{
array<int ,10 > x;//长度为10的int类型数组
array<int ,3 > y={2,4,1};
array<int ,3 > z;
z=y;//这里array的赋值,比标准数组方便,不需要逐个进行赋值
return 0;
}
四、三者的区别
无论是array还是vector都可以用标准数组的访问方式来访问数据。
但是这样可能导致数组越界的情况发生。vector,array可以使用at方法来避免这样错误发生,而且他们也有不同的方法来进行各种各样的操作,比标准数组方便很多。