C++11: 尽量使用std::array来代替数组

本文介绍了C++11中的std::array,它是一种固定大小的数组,提供类似容器的高级功能,如迭代器访问、获取容量、安全的元素访问等。与C风格数组相比,std::array不退化为指针,支持初始化、修改和遍历等操作,且在访问元素时推荐使用at()方法以避免越界错误。
摘要由CSDN通过智能技术生成

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值