std::array
template < class T, size_t N > class array;
array是固定大小的序列容器,array存储固定大小的元素在连续的精确的序列中。
在内部,一个array除了它的元素之外不保存其他的任何数据(甚至是其大小,因为其大小是array的模板参数,在编译的时候就已经确定了)。这是一种和平常利用[]语法来声明的数组一样高效的容器,该类仅仅只是在普通数组上加了一些成员以及全局方法,使array可以被当成标准容器来使用。
Unlike the other standard containers, arrays have a fixed size and do not manage the allocation of its elements through an allocator: they are an aggregate type encapsulating a fixed-size array of elements. Therefore, they cannot be expanded or contracted dynamically (see vector for a similar container that can be expanded).
和其他标准容器不一样的是,array具有固定的大小以及当它的元素超过(限制的大小)时它不能通过内存分配器来继续重分配,它是一个固定大小数组元素的封装,因此,他们不能自动增长或者收缩(比如vector).
大小为0的array是有效的,但是不应该被解除引用。(front,back,data方法).
例子:
#include <iostream>
#include <array>
using namespace std;
int main()
{
array<int,0> ai;
cout<<ai.front()<<endl;
cout<<ai.back()<<endl;
cout<<ai.data()<<endl;
}
运行截图:
可以看到,对其front,back得不到正确的值。
和其他容器在标准库中的行为不同,交换两个array容器将分别交换两者的元素,这是一种线性操作,通常被认为是一种低效的行为。另一方面,这可以使原来的迭代器保持有效。
Another unique feature of array containers is that they can be treated as tuple objects: The <array> header overloads the get function to access the elements of the array as if it was a tuple, as well as specialized tuple_size and tuple_element types.
array容器另一个独有的特性是可以被当成一个元组对象看待,array头文件重载了get方法可以使其像元组一样访问其元素,同样被特化的还有tuple_size以及tuple_element
Container properties
-
Sequence
-
Elements in sequence containers are ordered in a strict linear sequence. Individual elements are accessed by their position in this sequence.
元素严格地顺序排列在序列中,可以通过位置访问序列中的元素。
Contiguous storage
-
The elements are stored in contiguous memory locations, allowing constant time random access to elements. Pointers to an element can be offset to access other elements.
元素一次存放在连续的内存单元中,允许在常量时间内随即访问元素,指针可以通过偏移来访问元素。
Fixed-size aggregate
-
The container uses implicit constructors and destructors to allocate the required space statically. Its size is compile-time constant. No memory or time overhead.
容器使用内置的constructor以及deconstructor来请求分配空间,其大小在编译时是一个常量,内存以及时间都不会超出。
Template parameters
-
T
-
Type of the elements contained.
Aliased as member type array::value_type.
N
- Size of the array, in terms of number of elements.
Member types
The following aliases are member types of array. They are widely used as parameter and return types by member functions: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 |
Member functions
Iterators
-
begin
- Return iterator to beginning (public member function )
-
end
- Return iterator to end (public member function )
-
rbegin
- Return reverse iterator to reverse beginning (public member function )
-
rend
- Return reverse iterator to reverse end (public member function )
-
cbegin
- Return const_iterator to beginning (public member function )
-
cend
- Return const_iterator to end (public member function )
-
crbegin
- Return const_reverse_iterator to reverse beginning (public member function )
-
crend
- Return const_reverse_iterator to reverse end (public member function )
Capacity
-
size
- Return size (public member function )
-
max_size
- Return maximum size (public member function )
-
empty
- Test whether array is empty (public member function )
Element access
-
operator[]
- Access element (public member function )
-
at
- Access element (public member function )
-
front
- Access first element (public member function )
-
back
- Access last element (public member function )
-
data
- Get pointer to data (public member function )
Modifiers
-
fill
- Fill array with value (public member function )
-
swap
- Swap content (public member function )
Non-member function overloads
-
get (array)
- Get element (tuple interface) (function template )
-
relational operators (array)
- Relational operators for array (function template )
Non-member class specializations
-
tuple_element<array>
- Tuple element type for array (class template specialization )
-
tuple_size<array>
-
Tuple size traits for array (class template specialization )
—————————————————————————————————————————————————————————————————————————————
//翻译的不好的地方请多多指导,可以在下面留言或者点击左上方邮件地址给我发邮件,指出我的错误以及不足,以便我修改,更好的分享给大家,谢谢。
转载请注明出处:http://blog.csdn.net/qq844352155
author:天下无双
2014-8-25
于GDUT
——————————————————————————————————————————————————————————————————————————-———