C++11 新增容器 - array

C++11引入的array容器是固定大小的序列容器,提供安全的数组操作,支持随机存取、索引访问和迭代器访问。与C语言数组相比,array容器更安全,但不支持动态增删元素。文章介绍了array的概念、特点、构造、赋值、大小、数据存取及迭代器访问等核心内容。

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

array容器概念

array 容器是 C++ 11 标准中新增的序列容器,简单地理解,它就是在 C++ 普通数组的基础上,添加了一些成员函数和全局函数。

array是将元素置于一个固定数组中加以管理的容器。

array可以随机存取元素,支持索引值直接存取, 用[]操作符或at()方法对元素进行操作,也可以使用迭代器访问

不支持动态的新增删除操作

array可以完全替代C语言中的数组,使操作数组元素更加安全!

#include <array>

array特点

  • array 容器的大小是固定的,无法动态的扩展或收缩,这也就意味着,在使用该容器的过程无法增加或移除元素而改变其大小,它只允许访问或者替换存储的元素。
  • STL 还提供有可动态扩展或收缩存储空间的 vector 容器

array对象的构造

array采用模板类实现,array对象的默认构造形式

array<T,int> arrayT;    //T为存储的类型, 为数值型模板参数

//构造函数

array<int, 5> a1;     //一个存放5个int的array容器

array<float, 6> a2;   //一个存放6个float的array容器

array<student, 7> a3; //一个存放7个student的array容器

array的赋值

a1.assign(0); //玩法一 改变array中所有元素(注:将被废弃,不推荐使用)

a1.fill(666); //玩法二 用特定值填充array中所有元素

array<int, 4> test={1, 2, 3, 4};// 玩法三 定义时使用初始化列表

array<int, 4> test;

test={1,2,3,4};   //玩法四 定义后使用列表重新赋值

array<int, 4> a1,a2;

a1={1,2,3,4};

a2 = a1;       //玩法五,赋值运算
a1.swap(a2);  //玩法六  和其它array进行交换

 

array的大小

array.size();    //返回容器中元素的个数

array.empty();       //判断容器是否为空,逗你玩的,永远为 false

array.max_size();   //返回容器中最大元素的个数,同size()。

array的数据存取

第一  使用下标操作 a1[0] = 100;

第二  使用at 方法 如: a1.at(2) = 100;

第三  接口返回的引用 a1.front() 和 a1.back() 

注意:   第一和第二种方式必须注意越界

 

array 迭代器访问

array.begin();          返回容器中第一个数据的迭代器。
    
array.end();            返回容器中最后一个数据之后的迭代器。

array.rbegin();         返回容器中倒数第一个元素的迭代器。

array.rend();           返回容器中倒数最后一个元素的后面的迭代器。
         
array.cbegin();         返回容器中第一个数据的常量迭代器。

array.cend();           返回容器中最后一个数据之后的常量迭代器。

array.crbegin();        返回容器中倒数第一个元素的常量迭代器。

array.crend();          返回容器中倒数最后一个元素的后面的常量迭代器。


array<int, 5> arrayInt = {1, 2, 3, 4, 5};

//顺序输出  1 2 3 4 5

for(array<int, 5>::iterator it=arrayInt .begin(); it!=arrayInt .end(); ++it)

{

      int elem = *it;

      cout << elem;    //或直接使用cout << *it

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值