静态数组std array in C++【C++学习笔记】

57.静态数组std array in C++

std array是一个实际的标准数组类,是C++标准模板库的一部分

array是用来处理静态数组的,这里的静态的意思是不增长的数组,当创建array时就要初始化其大小,并且不能将他容量随后变大变小

🍅array用法

使用静态数组要包含头文件#include <array>

array接受两个模板参数(也可以只选一个类型参数,但99.99%的情况都是两个参数)

💡array<类型, 大小> 名字

#include <array>
int main() {
    std::array<int, 5> data;
    data[0] = 1;
    data[4] = 10;
    return 0;
}

(如果这样子看的话,array就是一个模板类)

如果单单这样看,array和C语言风格的原生数组是一模一样的,那么为什么要用它呢?

🍅使用array的目的

1.可以直接知道数组的大小
int main() {
    int a[99];
    int size = 99;//老数组需要显式的写出来大小,不能访问其大小
    std::array<int, 99>b;
    b.size(); //array可以直接访问其大小
}
2. 可以使用对应的迭代器进行操作

可以利用迭代器来操作STL算法函数,或者单纯遍历

std::array<int, 3> a = {3, 1, 2};
std::sort(a.begin(), a.end());

for (int temp : array) {
    std::cout << temp << std::endl;
}
3.array和原生数组都是创建在栈上的(vector是在堆上创建底层数据储存的)
4.原生数组越界的时候不会报错,而array会有越界检查,会报错提醒
int a[5];
std::cout << a[5];
//系统会照常工作,然后输出-858993460的错误数字,系统完全没意识到数组是访问了它不该访问的地方
//如果是array,就会报错了
  • 并不需要担心越界检测会拖慢array的速度,array是相当快的(在栈上)。而当array在最优化情况下,它的速度和普通风格的数组是一样的(正常情况下会慢于普通数组)

🍅Cherno的使用建议

你应该开始到处使用这个std::array,而不是普通的C语言数组,因为它有增加了一层调试(并且它也没有性能成本!),并且它还可以让你记录数组的大小

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值