标签:
template < class T, size_t N > class array;
数组类
数组容器是固定长度的序列容器:按照严格的线性顺序,存储一定数量的元素。
数组容器内部并不维护除了元素本身之外的任何数据(甚至不保存自己的size,这是一个编译时就确定的模板参数)。数组容器对存储空间的利用效率和普通数组一样高。数组类仅仅在数组之外增加了一些成员以及全局函数,使得这些数组能够被当作一个标准容器来使用。
与其他的标准容器不同的是,数组容器具有固定的大小,并且不使用allocator来管理对元素内存空间的分配,数组容器集合了各样的成员并且封装了一个固定长度的数组。因此数组容器不能够被动态的扩展或者截断(参考vector,这是一个能够被扩展的相似的容器)。
定义长度为0的数组容器是合法的,但是不能对它解引用*(成员front,back,以及data)。
*译者:解引用是引用的反向操作,如下例:
1 int a=0; 2 int* pa=&a; //此处的&a是引用操作 3 *pa=100; //此处的*pa是解引用操作
与标准库中得其它容器不同的还有,交换*两个数组容器的操作涉及到逐个交换容器中每一个元素,通常情况下这是一个非常低效的操作。从另一方面来讲,这样的实现使得他们的迭代器始终保持着与原容器的关联。
*译者:交换操作是数组容器提供的一个方法(函数),通过这个方法可以交换两个数组容器内的元素,见swap。
数组容器另外一个独特的特性是它可以被当做一个tuple对象来操作:<array>头文件中重载了get函数,通过它可以像tuple一样来访问数组容器的元素,同样的也可以使用tuple_size以及tuple_element来获取数组容器的大小与元素类型。
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 | a random access iterator to value_type | convertible to const_iterator |
const_iterator | a 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 |
迭代器
容量
元素的访问
修改器
数组容器的关系运算符(模板函数)
数组类型的元组元素(类模板的特化)
数组类型的元组长度特性(类模板的特化)
[翻译] C++ STL容器参考手册(第一章 <array>)
标签:
原文地址:http://www.cnblogs.com/barney-li/p/4187594.html