1. 原型

C11提供

template < class T, size_t N > class array;

T: 元素类型,以 array::value_type 作为别名使用;N: array中元素大小;

  • 固定size的序列容器;
  • 初始化时, array对象不保存任何数据,除了编译时期的行为对“元素”参数的编译器初始化值
  • 和普通的数组一样,从[]访问
  • array仅仅为数组封装了一层成员函数和全局函数,以作为标准容器使用
  • array固定容器大小,不能扩展容量;
  • 0大小的array是有效的,但是不能访问数据。
  • STL  中的swap操作是非常低效率的操作;
  • array容器能够作为tuple对象(元组对象)使用。 头文件<array>中重载了get函数来获取array中的元素值。
使用头文件:  #include <array>

1.1 成员类型:

array中的成员类型作为一些参数、或者返回值类型的别名使用,下面的是别面以及定义:

  • value_type:模板参数T
  • reference: value_type&
  • const_reference: const value_type&;
  • pointer: value_type*
  • const_pointer: const value_type*;
  • iterator: 随机指向value_type的迭代器
  • const_iterator: 指向const value_type类型的迭代器
  • reverse_iterator:
  • const_reverse_iterator:
  • size_type: size_t(无符号整数 unsign int)
  • difference_type: ptrdiff_t(符号整形 int)

1.2 成员函数

(1)Iterators

Array::begin:

Array::end:

Array::rbegin:

Array::rend;

Array::cbegin

Array::cend;

Array::crbegin

Array::crend;

(2)Capacity

Array:: size(): 元素数量

Array::max_size():最大容量

Array::expty(): 测试是否为空

(3)Element access

Array:: operator[]: 
  • 返回参数n位置的reference,注意,第一个元素位置为0
  • 与 成员函数at()具有相同的行为, 但是array::at()是会检查参数n是否越界,以及如果越界则抛出异常信号
  • 如果是const的array,则返回const_reference,否则返回reference
  • 注意:refenerence的样式是类型array内的别名定义。

reference at ( size_type n );

const_reference at ( size_type n ) const;

  • 返回参数n位置的reference。自定检测n是否位于有效的范围内。并抛出out_of_rance 异常。如果n 大于size或者等于size

Array::front();

  • 返回第一个元素的reference
  • Calling this function on an empty container causes undefined behavior.

Array::back();

  • 返回最后一个元素的reference, 不像array::end()返回的是iterator
  • Calling this function on an empty container causes undefined behavior.

Array::data();

  • 返回pointer类型指向第一个元素;
  • 因为array类型是连续内存分配,因此可以对pointer进行任何偏置访问相应位置数据;

(4)Modifiers

void Array::fill(const value_type& val):
  • 对数组中的所有元素设置参数值
void Array::swap(array& x):
  • 交换内容,两个对象具有相同的size;
  • 调用之后,两个对象互相交换内容;

 1.3 非成员函数重载

  get(array)

返回array 中的第i个元素属性引用。

  relational operators(array)

1.4 非成员 类的声明

(1)tuple_element<array>

(2)tuple_size<array>

转载于:https://www.cnblogs.com/icmzn/p/8642704.html

STL-容器库101--array【C11】相关推荐

  1. 简洁明了——STL容器库之set头文件常用函数集合

    简介: 1.同vector封装数组,list封装链表一样,set和map封装了二叉树(红黑树,性能优于平衡二叉树) 2.有序且去重 3.插入.删除.查找效率高(二叉树) 4.插入or删除后迭代器仍有效 ...

  2. C++ 笔记(19)— 标准模板库(STL容器、STL迭代器、STL算法、STL容器特点、STL字符串类)

    C++ 标准库可以分为两部分: 标准函数库: 这个库是由通用的.独立的.不属于任何类的函数组成的.函数库继承自 C 语言. 面向对象类库: 这个库是类及其相关函数的集合. C++ 标准库包含了所有的 ...

  3. C++ STL容器——序列式容器(array、vector、deque、list)

    概述 1.C++ STL的容器分为三种,序列式容器,关联式容器,无序式容器,这里先说说常用的序列式容器. 2.array,vector,deque,list,forward_list这几种都是序列式容 ...

  4. STL标准库-容器-set与map

    STL标准库-容器-set与multiset C++的set https://www.cnblogs.com/LearningTheLoad/p/7456024.html STL标准库-容器-map和 ...

  5. STL容器系列文章:array容器

    1. 头文件 #include <array> 2. 定义 C11中引入,静态数组,序列式容器.array可以看做普通数组添加了成员函数,使得数组能够被当成标准容器来使用.容器的大小固定, ...

  6. C++ 标准模板库 STL 容器适配器

    C++ 标准模板库 STL 容器适配器 容器 数据结构 时间复杂度 顺序性 重复性 stack deque / list 顶部插入.顶部删除 O(1) 无序 可重复 queue deque / lis ...

  7. C++ STL容器 —— array 用法详解

    C++ STL容器 -- array 用法详解 写在前面:近期正在学习C++的STL容器,因此在这里做一下日志记录,主要介绍一些容器基本成员函数的用法, 配上实际用例,并不涉及原理.但别人的博客终究是 ...

  8. STL标准库及泛型编程

    1-认识headers.版本.重要资源 C++ Standard Library Standard Template Library 标准库 > STL 标准库以header files形式呈现 ...

  9. C++拾取——使用stl标准库实现排序算法及评测

    今天看了一篇文章,讲各种语言的优势和劣势.其中一个观点:haskell非常适合写算法,因为使用者不用去关心具体的计算机实现,而只要关注于操作语义.这让它在专心研究算法的人中非常受欢迎.所以很多时候,语 ...

  10. 【小白学习C++ 教程】二十一、C++ 中的STL容器Arrays和vector

    @Author:Runsen C++的标准模板库(STL)是提供数组.向量.队列等数据结构的模板类的集合.STL是由容器.算法.迭代器组成的库. 容器 容器存储对象和数据.它们基本上是基于模板的泛型类 ...

最新文章

  1. 图说数据中心蒸发节能技术
  2. poj1236-Tarjan算法
  3. 使用 dotnet-monitor 在 Kubernetes 中收集 .NET metrics
  4. sklearn官网-多分类问题
  5. mysql数据库总览_MySQL架构总览-查询执行流程-SQL解析顺序
  6. 电机的入门之路系列2--电机驱动芯片2003的用法
  7. sed shell 替换空格_shell三剑客之sed!
  8. JS/html5前端合成语音(播报)
  9. Eclipse配色学习
  10. php向mysql写入_PHP向MySql中插入数据
  11. 台式计算机可以连接手机WiFi么,台式机能连wifi吗
  12. 如何有效地执行代码审查_使用这些有效的代码审查指南创建合理的办公环境
  13. uplink端口能接路由器吗_交换机常见的网络故障,你知道如何解决吗?
  14. FSCIL 小样本类增量学习
  15. 年轻代、年老代和持久代
  16. 一文读懂数字孪生的应用及意义
  17. 数据结构与算法————无向图
  18. 在后台删除新闻时,需要删除服务器上的文件夹
  19. PHP--入门(一)
  20. 使用脚本控制外部流程-CMD

热门文章

  1. 在Perl程序中显示进度条之多姿多彩的自写代码
  2. opencv 运动追踪_足球运动员追踪-使用OpenCV根据运动员的球衣颜色识别运动员的球队
  3. Python中的线性回归:Sklearn与Excel
  4. Markdown 图标 快捷键
  5. 为什么以前那种到处喝咖啡创业的场景一去不复返了?
  6. 可以编辑的标签控件CStatic
  7. linux php运行用户名和密码,Linux实例(一)使用用户名密码验证连接Linux
  8. html引用c 变量,在jsp页面中定义全局变量,供其他页面引用
  9. 委外订单_听听晚报-英特尔扩大芯片委外订单、苹果秋季或举行两场发布会
  10. 时间设置偏移秒_零偏移有源低通滤波器,第2部分