数组维度
首先,数组是一种符合类型,声明如a[d],d是维度,维度必须是是一个常量表达式。
Int a[] = {1,2,3};
Int I = 1;
a[i] = 2;//错误,因为i是变量;
Constexpr size_t I = 1;
a[i] = 2;//正确,i是常量
begin和end在数组中的使用
数组和vector类似,都有begin和end的操作,不同的是begin和end是vector中的成 员,而在数组中却不是。
/*int ia[] = { 0,1,2,3,4,5,6,7,8,9 };
int *beg = begin(ia);
int *last = end(ia);
cout << last - beg << endl;*/
数组对vector的赋值
不允许一个数组为另一个内置类型的数组赋初值,也不允许使用vector对象初始化数组。相反,允许使用数组来初始化vector对象。要实现这一目的,只需指明要拷贝区域的首元素地址和尾后地址即可。如下:
/*int int_arr[] = { 0,1,2,3,4,5 };
vector<int> ivec( begin(int_arr),end(int_arr) );
for (auto i : ivec)22:37
cout << i << " ";
cout << endl;*/
多维数组中使用范围for循环
多维数组中使用范围for循环需要注意的是,除了最内层循环外,其他所有循环控制的控制变量应该是引用类型,这时为了避免数组自动转换为指针。如下:
/*int ia[3][4] = { {1,2,3,4},
{2,3,4,5},
{3,4,5,6} };
size_t cnt = 0;
for (auto &row : ia)
for (auto col : row) {
col = cnt;
cnt++;
}*/
指针数组和数组的指针
Int *p[10];//为含有10个指针的数组
Int (*p)[10];//为指向含有10个元素数组的指针
数组的引用
Int (&p)[10];//p为含有10个元素数组的引用
需要注意的是,数组中的元素必须是对象,所以不存在引用数组。这一点和vector相同。