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

静态数组std array in C++【C++学习笔记】,第1张

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

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

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

🍅array用法

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

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

💡array<类型, 大小> 名字
#include 
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语言数组,因为它有增加了一层调试(并且它也没有性能成本!),并且它还可以让你记录数组的大小

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/713531.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-24
下一篇 2022-04-24

发表评论

登录后才能评论

评论列表(0条)

保存