#include<iostream>
#include<vector>
#include<array>
using namespace::std;
int main()
{
double a1[4] = { 1.2,2.4,3.6,4.8 };
vector<double> a2(4);
a2[0] = 1.0 / 3.0;
a2[1] = 1.0 / 5.0;
a2[2] = 1.0 / 7.0;
a2[3] = 1.0 / 9.0;
//C++11里用array创建一个数组
array<double, 4>a3 = { 3.14,2.72,1.62,1.41 };
array<double, 4>a4;
a4 = a3;
cout << "a1[2]:" << a1[2] << "at" << &a1[2] << endl;
cout << "a2[2]:" << a2[2] << "at" << &a2[2] << endl;
cout << "a3[2]:" << a3[2] << "at" << &a3[2] << endl;
cout << "a4[2]:" << a4[2] << "at" << &a4[2] << endl;
a1[-2] = 20.2;
cout << "a1[-2]:" << a1[-2] << "at" << &a1[-2] << endl;
cout << "a3[2]:" << a3[2] << "at" << &a3[2] << endl;
cout << "a4[2]:" << a4[2] << "at" << &a4[2] << endl;
return 0;
}
首先,无论是数组、vector对象还是array对象,都可以使用标准数组访问法来访问各个元素。其次,从地址可知,array对象和数组存储在相同的内存区域(即栈)中,而vector对象存储在另一个区域(自由存储区域)中。第三,注意到可以将一个array对象赋值给另一个array对象;对于数组,必须逐元素复制。
另外a1[-2] = 20.2 会产生越界,将信息存储到数组外面,C++中不检查这种越界错误