返回总册

本章节原文:http://www.cplusplus.com/reference/array/array/

1. std::array (C++11支持)

template < class T, size_t N > class array;

数组类

数组容器是固定长度的序列容器:按照严格的线性顺序,存储一定数量的元素。

数组容器内部并不维护除了元素本身之外的任何数据(甚至不保存自己的size,这是一个编译时就确定的模板参数)。数组容器对存储空间的利用效率和普通数组一样高。数组类仅仅在数组之外增加了一些成员以及全局函数,使得这些数组能够被当作一个标准容器来使用。

与其他的标准容器不同的是,数组容器具有固定的大小,并且不使用allocator来管理对元素内存空间的分配,数组容器集合了各样的成员并且封装了一个固定长度的数组。因此数组容器不能够被动态的扩展或者截断(参考vector,这是一个能够被扩展的相似的容器)。

定义长度为0的数组容器是合法的,但是不能对它解引用*(成员frontback,以及data)。

*译者:解引用是引用的反向操作,如下例:

 int a=;
int* pa=&a; //此处的&a是引用操作
*pa=; //此处的*pa是解引用操作

与标准库中得其它容器不同的还有,交换*两个数组容器的操作涉及到逐个交换容器中每一个元素,通常情况下这是一个非常低效的操作。从另一方面来讲,这样的实现使得他们的迭代器始终保持着与原容器的关联。

*译者:交换操作是数组容器提供的一个方法(函数),通过这个方法可以交换两个数组容器内的元素,见swap

数组容器另外一个独特的特性是它可以被当做一个tuple对象来操作:<array>头文件中重载了get函数,通过它可以像tuple一样来访问数组容器的元素,同样的也可以使用tuple_size以及tuple_element来获取数组容器的大小与元素类型。

2. 容器属性

序列
  序列容器中的元素是按照严格的线性顺序来存储的。访问每一个元素时,都是通过这个元素在序列中所处的位置来访问的。
连续的存储空间
  序列容器中的元素是存储在一片连续的内存空间中,因此随机访问任意元素的时间都是相同的。指向一个元素的指针可以通过偏移地址来访问其它元素。
固定长度
  容器使用构造器与析构器来静态分配所需要的空间。容器的大小在编译时就已经确定。(运行时)没有(额外的)空间或时间上的开销。

3. 模板参数

参数T
  容器所包含元素的类型。与类成员array::value_type是一致的。
参数N
  数组容器的大小,表示元素的数量。
在array成员函数的参考或说明中,这些参数名默认作为模板参数*。
*译者:比如说这里template < class T, size_t N > class array;

4. 成员类型

以下的这些别名都是array的成员类型。他们被广泛的用作参数类型和成员函数返回值的类型。
 
member type definition notes
value_type The first template parameter (T)  
reference value_type&  
const_reference const value_type&  
pointer value_type*  
const_pointer const value_type*  
iterator random access iterator to value_type convertible to const_iterator
const_iterator random access iterator to const value_type  
reverse_iterator reverse_iterator<iterator>  
const_reverse_iterator reverse_iterator<const_iterator>  
size_type size_t unsigned integral type
difference_type ptrdiff_t signed integral type

5. 成员函数

迭代器

begin
返回指向容器最前端的迭代器 (公有成员函数)
end
返回指向容器最后端的迭代器 (公有成员函数)
rbegin
返回指向容器最后端的反向迭代器 (公有成员函数)
rend
返回指向容器最前端的反向迭代器 (公有成员函数)
cbegin
返回指向容器最前端的只读迭代器 (公有成员函数)
cend
返回指向容器最后端的只读迭代器 (公有成员函数)
crbegin
返回指向容器最后端的反向只读迭代器 (公有成员函数)
crend
返回指向容器最前端的反向只读迭代器 (公有成员函数)
*译者:这里的“最前端”与“最后端”分别指容器中第一个元素与容器中最后一个元素。只读迭代器本身可以进行增减操作,但是使用只读迭代器指向的元素是只读的。

容量

size
返回元素的数量 (公有成员函数)
max_size
返回容器最多能够存储的元素数量 (公有成员函数)
empty
测试数组容器是否为空 (公有成员函数)

元素的访问

operator[]
访问元素 (公有成员函数)
at
访问元素 (公有成员函数)
front
访问第一个元素 (公有成员函数)
back
访问最后一个元素 (公有成员函数)
data
返回指向数据的指针* (公有成员函数)
*译者:data返回的指针其实就是指向第一个元素的指针。 

修改器

fill
使用某个值填充整个容器 (公有成员函数)
swap
交换容器的内容 (公有成员函数)

6. 重载的非成员函数

get (array)
  获取元素(元组接口)(模板函数)
relational operators (array)

  数组容器的关系运算符(模板函数)

7. 特化非成员类

tuple_element<array>

  数组类型的元组元素(类模板的特化)

tuple_size<array>

  数组类型的元组长度特性(类模板的特化)

[翻译] C++ STL容器参考手册(第一章 <array>)的更多相关文章

  1. [翻译] C++ STL容器参考手册 (总册)

    1. 写在最前面 这将是博主的第一篇技术博客,思考再三决定从翻译开始.这将是一个系列的博客,由不同的章节组成,章节之间由超链接联系,开发过程将使用增量式开发,每次完成一个章节.本篇是本系列的总册,提供 ...

  2. [翻译] C++ STL容器参考手册(第二章 <deque>)

    返回总册 本章节原文:http://www.cplusplus.com/reference/deque/deque/ 1. std::deque template < class T, clas ...

  3. [书籍翻译] 《JavaScript并发编程》第一章 JavaScript并发简介

    > 本文是我翻译<JavaScript Concurrency>书籍的第一章,该书主要以Promises.Generator.Web workers等技术来讲解JavaScript并 ...

  4. Linux/Unix系统编程手册 第一章:历史和标准

    Unix的开发不受控于某一个厂商或者组织,是由诸多商业和非商业团体共同贡献进行演化的.这导致两个结果:一是Unix集多种特性于一身,二是由于参与者众多,随着时间推移,Unix实现方式逐渐趋于分裂. 由 ...

  5. 【翻译】Express web应用开发 第一章

    本章节是一个对初学者友好的Express介绍.你将学习到Express的基础知识.核心概念和实现一个Express应用的组成部分.现阶段我们不需要做太多的编码,本章节会让你熟悉和习惯Express,为 ...

  6. Oauth2手册 第一章

    来源:https://github.com/jeansfish/RFC6749.zh-cn/blob/master/SUMMARY.md 1. 简介在传统的客户端-服务器身份验证模式中,客户端请求服务 ...

  7. essential c++ 第一章 array及vector相关使用

    将对象初始化: 1.用等号(=)赋值运算符初始化,针对对象是内置类型或者对象可以单一值初始化 2.构造函数初始化,针对对象需要多个初始值的情况 单括号括住的字符表示字符常量(‘ ’): 第一个反斜线表 ...

  8. Lua 5.2 中文参考手册

    闲来无事,发现Lua更新到了5.2.2,参考手册也更到了5.2,在网上发现只有云风翻译的5.1版,花了几天时间翻译了一些. 参考手册有点长,又要随时修改,所以在github上建了项目,有需要的朋友可以 ...

  9. Spring Security 5.0.x 参考手册 【翻译自官方GIT-2018.06.12】

    源码请移步至:https://github.com/aquariuspj/spring-security/tree/translator/docs/manual/src/docs/asciidoc 版 ...

随机推荐

  1. HTML中元素水平居中。

    一丶margin:0 auto; 试用最多的方法,简单实用. 二丶vertical-align:middle; 只适用于内嵌元素,比如说一个div中有一个图片和文字,要让图片和文字中线对齐. < ...

  2. 手把手教你如何使用webpack+react

    上一篇随笔讲述了新手入门入门前端 里面提到的第四阶段跟上当前前端的发展需要入门一个框架和自动化工具,当时推荐的是webpack+react 今天正好有空,也把自己入门webpack + react 的 ...

  3. [转]hibernate主键生成策略

    1.自动增长identity 适用于MySQL.DB2.MS SQL Server,采用数据库生成的主键,用于为long.short.int类型生成唯一标识使用SQL Server 和 MySQL 的 ...

  4. VirtualBox虚拟机无法选择桥接方式

    VirtualBox 装好之后默认的网络是NAT模式,但这种模式中虚拟机配置的IP和主机的不再同一网段内,无法获得和主机一样的局域网地位,更不可能从主机用远程桌面携带硬盘的方式远程控制.而最简便的方法 ...

  5. KEILC51可重入函数及模拟栈浅析

    MARK:文章中的红色部分是个人的理解. KEILC51可重入函数及模拟栈浅析 关键字:keilc51,模拟堆栈,可重入函数调用,参数传递,C?XBP,C?ADDXBP 摘要:本文较详细的介绍了kei ...

  6. The Most Wanted Letter

    The Most Wanted Letter You are given a text, which contains different english letters and punctuatio ...

  7. php将会话保存在数据库里

    php默认把会话保存在临时文件中,保存在数据库中可以提高安全性,在共享主机服务器上,所有web站点都使用同一个临时目录,这意味着数十个程序都在同一位置进行文件读取的操作,我们很容易就编写一个脚本从这个 ...

  8. Copy Constructor in Java

    Reference: TutorialPoints, GeekforGeeks The copy constructor is a constructor which creates an objec ...

  9. 《Algorithms 4th Edition》读书笔记——3.1 符号表(Elementary Symbol Tables)-Ⅱ

    3.1.2 有序的符号表 典型的应用程序中,键都是Comparable的对象,因此可以使用a.compare(b)来比较a和b两个键.许多符号表的实现都利用Comparable接口带来的键的有序性来更 ...

  10. Linux内存点滴 用户进程内存空间

    Linux内存点滴 用户进程内存空间 经常使用top命令了解进程信息,其中包括内存方面的信息.命令top帮助文档是这么解释各个字段的. VIRT, Virtual Image (kb) RES, Re ...