std::array
| Defined in header  <array> | ||
| template<      class T,  | (since C++11) | |
std::array is a container that encapsulates constant size arrays.  
This struct has the same aggregate type semantics as a C-style array. The size and efficiency of array<T,N> for some number of elements is equivalent to size and efficiency of the corresponding C-style array T[N]. The struct provides the benefits of a standard container, such as knowing its own size, supporting assignment, random access iterators, etc.
There is a special case for a zero-length array (N == 0). In that case, array.begin() == array.end(), which is some unique value.  The effect of calling front() or back() on a zero-sized array is undefined.
array is an aggregate (it has no user-defined constructors and no private or protected members), which allows it to use aggregate-initialization.
An array can also be used as a tuple of N elements of the same type.
| Contents | 
[edit] Member types
| Member type | Definition | 
| value_type | T | 
| size_type | size_t | 
| difference_type | ptrdiff_t | 
| reference | value_type& | 
| const_reference | const value_type& | 
| pointer | T* | 
| const_pointer | const T* | 
| iterator | RandomAccessIterator | 
| const_iterator | Constant random access iterator | 
| reverse_iterator | std::reverse_iterator<iterator> | 
| const_reverse_iterator | std::reverse_iterator<const_iterator> | 
[edit] Member functions
| Implicitly-defined member functions | |
| (constructor) (implicitly declared) | default-constructs or copy-constructs every element of the array (public member function) | 
| (destructor) (implicitly declared) | destroys every element of the array (public member function) | 
| operator= (implicitly declared) | overwrites every element of the array with the corresponding element of another array (public member function) | 
| Element access | |
| access specified element with bounds checking (public member function) | |
| access specified element (public member function) | |
| access the first element (public member function) | |
| access the last element (public member function) | |
| direct access to the underlying array (public member function) | |
| Iterators | |
| returns an iterator to the beginning (public member function) | |
| returns an iterator to the end (public member function) | |
| returns a reverse iterator to the beginning (public member function) | |
| returns a reverse iterator to the end (public member function) | |
| Capacity | |
| checks whether the container is empty (public member function) | |
| returns the number of elements (public member function) | |
| returns the maximum possible number of elements (public member function) | |
| Operations | |
| fill the container with specified value (public member function) | |
| swaps the contents (public member function) | |
[edit] Non-member functions
| lexicographically compares the values in the array (function template) | |
| accesses an element of an array(function template) | |
| specializes the std::swap algorithm (function template) | |
[edit] Helper classes
| obtains the size of an array(class template specialization) | |
| obtains the type of the elements of array(class template specialization) | |
[edit] Example
#include <string> #include <iterator> #include <iostream> #include <algorithm> #include <array> int main() { // construction uses aggregate initialization std::array<int, 3> a1{ {1,2,3} }; // double-braces required std::array<int, 3> a2 = {1, 2, 3}; // except after = std::array<std::string, 2> a3 = { {std::string("a"), "b"} }; // container operations are supported std::sort(a1.begin(), a1.end()); std::reverse_copy(a2.begin(), a2.end(), std::ostream_iterator<int>(std::cout, " ")); // ranged for loop is supported for(auto& s: a3) std::cout << s << ' '; }
Output:
3 2 1 a b