返回总册

本章节原文: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. .Net 插入数据MySql数据库,中文乱码解决问题

    1, 修改mysql根目录下配置文件my.ini,在[client]节点下添加default-character-set=utf8 ,在[mysqld]节点下添加character_set_serve ...

  2. PHP连接Microsoft SQL Server 2005/2008

    PHP自带的MSSQL扩展php_mssql.dll原来是给SQL Server 2000用的,难怪连接不上2008?! -_-!!要使用SQL Server 2005以上版本,就要用到微软为PHP提 ...

  3. Hadoop1.2.1伪分布模式安装指南

    一.前置条件 1.操作系统准备 (1)Linux可以用作开发平台及产品平台. (2)win32只可用作开发平台,且需要cygwin的支持. 2.安装jdk 1.6或以上 3.安装ssh,并配置免密码登 ...

  4. java 编码转换

    在网络中爬取到的数据,编码可能与当前编译器的编码不相同,而导致可能产生显示乱码的问题.那么如何将网络的编码,转换为当前编译器认可的编码(一般为UTF-8),就是个问题了. 主要使用了两个方法: Str ...

  5. Scala学习文档-各种使用模式的情况

    模式在变量定义中 在定义val或者var的时候,可以使用模式替代简单的标识符,如可以使用模式拆分元组,并把每个值分配给变量 val myTuple = (123,"abc") va ...

  6. BZOJ 1264 基因匹配Match(LCS转化LIS)

    题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=1264 题意:给出两个数列,每个数列的长度为5n,其中1-n每个数字各出现5次.求两个数列 ...

  7. LeetCode_Path Sum II

    Given a binary tree and a sum, find all root-to-leaf paths where each path's sum equals the given su ...

  8. LeetCode_Spiral Matrix II

    Given an integer n, generate a square matrix filled with elements from 1 to n2 in spiral order. For ...

  9. hmac_sha1 签名

    use URI::Escape qw(uri_unescape); use MIME::Base64; use Digest::HMAC_SHA1; $str=Digest::HMAC_SHA1::h ...

  10. JQuery轻量级网页编辑器 选中即可编辑

    目前流行的可视化网页编辑器非常多,像ckeditor.kindeditor.tinyeditor等,虽然功能都非常强大,但是体积都比 较庞大,使用起来也不是很方便.今天我们分享一款基于jQuery的轻 ...