网站建设网站推广,微信社群营销,聊城市建设局网站,查询一个网站是用什么系统做的std::array是原生数组的封装#xff0c;它存放于栈上且大小固定#xff0c;性能也与之相同。在原生数组的基础上#xff0c;它添加了范围检查#xff0c;以及其它的STL的相应特性#xff0c;比如复制、交换、迭代器、查询大小。 按照C11的规范#xff0c;应该抛弃原生数组… std::array是原生数组的封装它存放于栈上且大小固定性能也与之相同。在原生数组的基础上它添加了范围检查以及其它的STL的相应特性比如复制、交换、迭代器、查询大小。 按照C11的规范应该抛弃原生数组所有使用原生数组的地方都应按需换成vector或者array。对于固定个数的一组值可以考虑使用std::array。 初始化 std::array属于简单对象没有构造函数也没有私有或保护成员这就意味着它不会自动初始化。如果不对其初始化而直接获取其中的值读出来的是野值。 可以使用聚合表达式花括号对其初始化。 arrayint, 3 arr {1, 2, 3}; 如果花括号内元素个数小于数组容量则会为剩余元素自动赋默认值。 也可以用fill函数对其填充。 arrayint, 10 arr;
arr.fill(0); 访问元素 可以用operator[]和at()对元素随机访问两者都带范围检查。也可以直接使用迭代器或者范围for语句。 下面的例子对数组中的十个元素求出最大值最小值和平均值 #include iostream
#include arrayusing namespace std;int main()
{arrayint, 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