array解析及操作

本文介绍了C++中的array容器,它提供了一种安全访问和操作数组的方式,支持begin、end和size等函数。相比于普通数组,array在传递给函数时更方便,且提供了遍历和一些额外的容器函数,如size、empty和swap。然而,与vector不同,array不能动态扩展。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

介绍

模板定义的一种相当于标准数组的容器类型。

使用

创建
std::array<double, 100> data {}; // 创建100个double,值全0
std::array<double, 10> values {0.5, 1.0, 1.5, 2.0}; // 值初始化
赋值
values.fill(3); // 所有元素全部赋值3

源码

从里面可以看到支持了begin end 和size

template <typename T>
  struct Array
  {
    std::size_t size_;
    const T *data_;

    Array()
    : size_(0), data_(nullptr) {} //可以看见默认是0和空指针

    Array(size_t s, const T *p)
    : size_(s), data_(p) {}      // 大小和数据指针

    const T*
    begin() const
    { return data_; } //提供了bigin end size操作

    const T*
    end() const
    { return data_ + size_; }

    std::size_t
    size() const
    { return size_; }
  };

辨析

和普通数组的区别

  1. 访问更安全: at(),当用一个非法的索引访问数组元素时,能够被检测到
  2. 使用方便:数组容器可以作为参数传给函数,而不再需要单独去指定数组元素的个数
  3. 遍历机制:有正向和反向迭代器
  4. 一些函数支持:size,empty,front,back,swap,assign

和vector区别:

  1. 虽然底层都是数组,但是array不能动态扩展,vector能
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值