C++11标准库 - array
2016-01-19 11:45
225 查看
C++11标准库 - array
std::array是原生数组的封装,它存放于栈上且大小固定,性能也与之相同。在原生数组的基础上,它添加了范围检查,以及其它的STL的相应特性,比如复制、交换、迭代器、查询大小。
按照C++11的规范,应该抛弃原生数组,所有使用原生数组的地方,都应按需换成
vector或者
array。对于固定个数的一组值,可以考虑使用
std::array。
初始化
std::array属于简单对象,没有构造函数,也没有私有或保护成员,这就意味着它不会自动初始化。如果不对其初始化而直接获取其中的值,读出来的是野值。
可以使用聚合表达式(花括号)对其初始化。
array<int, 3> arr = {1, 2, 3};
如果花括号内元素个数小于数组容量,则会为剩余元素自动赋默认值。
也可以用
fill函数对其填充。
array<int, 10> arr; arr.fill(0);
访问元素
可以用operator[]和
at()对元素随机访问,两者都带范围检查。也可以直接使用迭代器,或者范围for语句。
下面的例子对数组中的十个元素求出最大值,最小值和平均值:
#include <iostream> #include <array> using namespace std; int main() { array<int, 10> arr = {17, 68, 87, 48, 1, 76, 90, 73, 95, 13}; int minVal = INT_MAX; int maxVal = INT_MIN; int sum = 0; cout << "数组的元素:"; for (int elem : arr) { cout << elem << ' '; minVal = minVal < elem ? minVal : elem; maxVal = maxVal > elem ? maxVal : elem; sum += elem; } cout << endl << "最大值:" << maxVal << endl << "最小值:" << minVal << endl << "平均值:" << double(sum) / arr.size() << endl; return 0; }
结果:
数组的元素:17 68 87 48 1 76 90 73 95 13 最大值:95 最小值:1 平均值:56.8
参考
C++ API 参考 - array相关文章推荐
- c++ 设计模式1
- 【C语言天天练(十五)】字符串输入函数fgets、gets和scanf
- MCMC and faster Gibbs Sampling using Rcpp
- C++中变量,函数的作用域和生命周期?
- c++ 封装 (上)
- 文学研究助手的实现C++
- c++ --> sizeof()使用小结
- C++实现约瑟夫环
- C++ primer 学习笔记(第二章:变量和基本类型)
- C++实现停车场管理系统
- c++ 中的string类
- C++实现学生信息管理系统
- C语言学习之结构体第一讲
- CC2541设置外部时钟为32Mhz
- C++常见面试题
- c语言的一些细节学习
- Windows系统下文件的概念及c语言对其的基本操作(丙)
- Windows系统下文件的概念及c语言对其的基本操作(乙)
- C++预处理器
- C++引用&和指针在作为形参时的区别