STL之Array

STL之Array

一个Array容器模塑出一个static array,它包覆一个寻常的static C-style数组并提供一个STL容器接口。Array是有着固定大小的一系列元素。因而在Array中,无法改变容器的大小,只能在初始定义时指定容器的大小,与C中的数组一致,但它比寻常的C数组更安全,而且效率上并没有变差。在Array中使用size()返回的结果始终是一样的,都是初始时指定的大小。

Array会把元素复制到其内部的C数组中,这些元素总是拥有一个明确的次序,故而Array是一种有序容器,而且其允许随机访问

Array的初始化

在Array初始化中,需要指定容器中存储的元素类型以及容器的大下,形式如下:

std::array<int, 4> arr;
复制代码

**array<>是唯一一个在“无任何初始值的情况下,其容器内的元素会被初始化”的容器。**在这个初始化过程中,对于基础类型,其初始值可能是不明确的,不一定会被初始化为0。在vs2017中测试时,在未指定初始值的情况下其内的元素值未被指定为0。

另外,在给array提供初始值列表进行初始化时,初始值列表中提供的值可以小于array容器所定义的元素数量,但不能大于所定义的元素数量。在初始值列表中给定的元素个数小于容器所定义的元素数量时,array中剩余的元素会调用默认初始化函数来初始化,基础类型数据将会被初始化为0。

Array的操作

array中有一个fill(val)方法,该方法可以将val的值赋给array容器中的每一个元素。data()方法可以获取array容器中的所有元素的值。

Array中元素访问的方法如下所示:

操作结果
c[idx]返回索引idx所指的元素(不检查范围)
c.at(idx)返回索引idx所指的元素(如果idx超出范围则抛出range-error异常)
c.front()返回第一个元素(不检查是否存在第一个元素)
c.back()返回最末元素(不检查是否存在最末元素)

Tuple接口

Array提供了tuple接口,可以使用tuple_size<>::value取得元素的个数,用tuple_element<>::type取得某特定元素的类型,用get()取得某特定元素的值。

typedef array<string, 5> FiveStrings;
FiveStrings a = {"hello", "nico", "how", "are", "you"};
tuple_size<FiveStrings>::value;         //5
tuple_element<1, FiveStrings>::type;    //string
get<1>(a);                              //"nico"
复制代码
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值