std::array是具有固定大小的数组,使用栈(静态内存分配)。支持快速随机访问,效率与数组相同。不能添加或删除元素。
需要包含头的头文件文件 #include<array>
- 定义时必须指定array的大小,因为大小是模板参数之一,不可忽略;
- 定义时不能使用变量指定大小;
- 可通过array构造新的array,可以使用{}构造;
- 不可使用数组构造。
array<int, 5> myarray = {1,2,3,4,5};
array<int,5> otherarray = myarray;
int b[5];
array<int,5> otherarray2 = b; //编译报错,error: no viable conversion from 'int [5]' to 'array<int, 5>
int init_size=5;
array<int, init_size> otherarray3; //编译报错,error: non-type template argument is not a constant expression
int d[init_size]; //普通数组是可以支持用变量初始化大小
可通过下标运算符[]对元素进行操作,还可以通过at/front/back进行操作。
note: 尽量使用at方法来访问元素,因为运算符[]不会对索引值进行检查,像myarray[-1]是不会报错的。使用at(),将在运行期间捕获非法索引的,而程序默认将中断。当然额外检查将导致程序运行时间更长。
降低意外越界错误的概率,包含成员函数begin()和end(),可以通过正向和反向迭代器对元素进行遍历。
C++11后,标准库引入了更现代化的数组std::array,cppreference.com是这样介绍的:
定义于头文件 &l
本文介绍了C++11中的std::array,它是一种固定大小的数组,提供类似容器的高级功能,如迭代器访问、获取容量、安全的元素访问等。与C风格数组相比,std::array不退化为指针,支持初始化、修改和遍历等操作,且在访问元素时推荐使用at()方法以避免越界错误。
最低0.47元/天 解锁文章
2883

被折叠的 条评论
为什么被折叠?



