前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C++11标准库 - array

C++11标准库 - array

作者头像
ApacheCN_飞龙
发布2019-02-15 10:32:39
9170
发布2019-02-15 10:32:39
举报
文章被收录于专栏:信数据得永生信数据得永生

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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016年01月19日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • C++11标准库 - array
    • 初始化
      • 访问元素
        • 参考
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档