STL容器之array

容器概述

容器用来管理一大群元素。为了适应不同需要,STL提供了不同的容器,如下图所示

 总的来说,容器可以分为三大类:
①序列式容器(Sequence container):这是一种有序(ordered)集合,其内每个元素均有确凿的位置——取决于插入时机和位置,与元素值无关。STL提供了5个定义好的序列式容器:
array、vector、deque、list、forward_list
②关联式容器(Associative container):这是一种已排序(sorted)集合,元素位置取决于其value(或key)和给定的某个排序准则。STL提供了4个关联式容器
set、multiset、map、multimap
③无序容器(Unordered (associative) container):这是一种无序集合(unordered collection),其内每个元素的位置无关紧要,唯一重要的是某特定元素是否位于此集合内。STL内含4个预定义的无序容器:
unordered_set、unordered_multiset、unordered_map、unordered_multimap
本文首先介绍aray容器的基本用法

1.特点

固定大小数组。支持快速随机访问。不能添加或删除元素以及改变容器大小等。

设计的目的是:与内置数组相比,array是一个更安全、更容易使用的数组类型

  • 头文件:#include <array>
  • using声明:using std::array;

2.构造

array<T,size>  v1; ==>v1是一个空的array(array已经分配了空间,但是没初始化,都是垃圾值)
array<T,size> v2(v1); ===>v2是v1的副本,拷贝构造(v1和v2在定义时,<>内必须是相同的大小)
array<T,size> v2=v1; ===>同上(注意,=运算符只能用于此处,单独拿出来用不行)
array<T,size> v1{a,b,c...}; ===>用元素a,b,c进行初始化
array<T,size> v1={a,b,c...}; ===>同上

3.操作

a1==a2;//判断a1和a2是否相等
a1!=a2;//判断a1和a2是否相等
>、>=、<、<= //以字典顺序进行比较

a[0],a[1],a[2]....//取值

4.相关函数

array功能有限,只支持部分函数,且部分函数功能与其他容器函数功能不一样

a.empty();//判断是否为空,返回布尔值
a.size();//返回容器中的元素个数
a.max_size();//返回容器的容量
a.front();//得到头元素
a.back();//得到尾元素
a.at(int i);//得到下标i处的元素,若下标越界,会抛出异常
a.data();//获取指向第一个数据的指针
//a1与a2必须是相同的大小
a1.swap(a2);//将a1和a2进行交换。容器的成员函数版本
swap(a1,a2);//同上。系统函数版本
 
a.assign(t);//将容器内的元素全部变为t
a.fill(t);//将容器内的元素全部变为t

使用

  • 使用时,必须指定大小
array<int, 3> a{1,2,3};
array<int, 3> b = { 1,2,3 };
  • 初始化之后,不能再进行赋值
array<int, 3> a{1,2,3};
//a={4,5,6};错误

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值