Array 类
Array是一个固定大小的序列容器;严格按照线性序列存储指定数量的元素。
Array的大小允许为0,但是大小为0的array,不允许解引用(front,back,data成员函数);
与标准库中的其他容器不同,交换两个array是一个线性操作,需要依次交换所有的元素,这是一个效率极其低下的原因。
不过,它允许两个容器中的元素迭代器保持其原始容器关联。
Array另一个独特的特征是,它可以被当作tuple(元组)对象;头文件<array>中包含了get函数访问数组的元素,就好像它是一个元组,以及专门的tuple_size和tuple_element类型。
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 | 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 |
成员函数
迭代器
- begin:返回指向容器的开始位置的迭代器。
- end: 返回指向容器的最后位置的下一位的迭代器。
- rbegin:返回反向迭代器以反向开始,即从原容器的最后一个元素位置,迭代方向由后向前。( rbegin----reverse begin)
- rend:与rbegin相反,返回反向迭代器以反向结尾元素的前一位,即原容器的第一个元素的前一个位置。
- cbegin:返回指向容器开始位置的常量迭代器,即不可以通过cbegin返回的迭代器改变所指向的元素的值。(cbegin----const begin)
- cend:返回指向容器最后一个元素的下一位的常量迭代器。
- crbegin:返回反向常量迭代器以反向开始,也不可是使用crbegin改变所指向元素的值。
- crend:返回反向常量迭代器以反向结尾的元素的前一位,同样不可使用crend改变所指向元素的值。
容量
- size:返回容器的大小。
- max_size:返回容器的最大容量。(与size 始终相等)
- empty:返回容器是否为空,为空返回true 否则返回false。
元素访问
- [] 操作:使用下表访问指定位置元素。
- at:与[]等价。
- front:返回容器的第一个元素。
- back:返回容器的最后一个元素。
- data:返回指向数组对象包含的数据的指针。
修饰符
- fill:使用指定的值填充数组。
- swap:交换元素。
(以上成员函数均为公有成员函数(public member function)
非成员函数-重载
- get<>(array) :返回array数组中指定位置元素的引用。(从tuple重载)
- 关系运算符:
operation equivalent operation a!=b
!(a==b)
a>b
b<a
a<=b
!(b<a)
a>=b
!(a<b)