数组

这种数据结构,每一个编程语言都有

定义与初始化

unsigned cnt = 42;
constexpr unsigned sz = 42;
int arr[10];    正确
int arr1[cnt];    错误,cnt不是常量表达式
int arr2[sz];    正确,sz是常量表达式
  • 数组的维度在编译时应该是已知的,所以使用常量表达式或字面值
  • 数组的默认初始化,会令数组含有未定义的值
  • 定义数组的时候必须指定数组的类型,不允许用auto关键字,且数组的元素应为对象,不存在引用的数组
int arr1[3] = {0,1,2};    arr1={0,1,2}
int arr2[5] = {0,1,2};    arr2={0,1,2,0,0}
int arr3[] = arr2    错误,不允许拷贝赋值
  • 对于复杂数组,一般可以根据运算符的优先级判断数组类型,或者可以从数组的名字开始由内向外的顺序阅读
int *(&arr)[10] = {}  arr是一个引用,引用对象是一个含有10个int指针的数组

数组的使用

访问数组内的元素,使用数组下标,要注意不要越界

指针与数组

在很多用到数组名字的地方,编译器会自动转化为一个指向数组第一个元素的指针

int a[] = {0,1,2};
auto a2 (a);   此时a2是一个指针

对数组使用begin和end

int a[] ={1,2,3,4,5,6,7};
int *beg=begin(a);
int *en = end(a);

数组初始化vector

使用数组可以初始化vector

int arr[]={0,1,2};
vector<int> ivec(begin(arr),end(arr));

多维数组

称为数组的数组更贴切

初始化

int a[2][2]={{0,1},{1,2}};
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容