This header is part of thecontainers library.
Includes | ||
(C++20) | Three-way comparison operator support[edit] | |
(C++11) | std::initializer_list class template[edit] | |
Classes | ||
(C++11) | fixed-sized inplace contiguous array (class template)[edit] | |
(C++11) | obtains the number of elements of a tuple-like type (class template)[edit] | |
(C++11) | obtains the element types of a tuple-like type (class template)[edit] | |
(C++11) | obtains the size of anarray (class template specialization)[edit] | |
obtains the type of the elements ofarray (class template specialization)[edit] | ||
Functions | ||
(C++11)(C++11)(removed in C++20)(C++11)(removed in C++20)(C++11)(removed in C++20)(C++11)(removed in C++20)(C++11)(removed in C++20)(C++20) | lexicographically compares the values of twoarray s(function template)[edit] | |
(C++11) | specializes thestd::swap algorithm (function template)[edit] | |
(C++20) | creates astd::array object from a built-in array(function template)[edit] | |
(C++11) | accesses an element of anarray (function template)[edit] | |
Range access | ||
(C++11)(C++14) | returns an iterator to the beginning of a container or array (function template)[edit] | |
(C++11)(C++14) | returns an iterator to the end of a container or array (function template)[edit] | |
(C++14) | returns a reverse iterator to the beginning of a container or array (function template)[edit] | |
(C++14) | returns a reverse end iterator for a container or array (function template)[edit] | |
(C++17)(C++20) | returns the size of a container or array (function template)[edit] | |
(C++17) | checks whether the container is empty (function template)[edit] | |
(C++17) | obtains the pointer to the underlying array (function template)[edit] |
// mostly freestanding#include <compare>#include <initializer_list> namespace std{// class template arraytemplate<class T, size_t N>struct array;// partially freestanding template<class T, size_t N>constexprbool operator==(const array<T, N>& x,const array<T, N>& y);template<class T, size_t N>constexpr/*synth-three-way-result*/<T> operator<=>(const array<T, N>& x,const array<T, N>& y); // specialized algorithmstemplate<class T, size_t N>constexprvoid swap(array<T, N>& x, array<T, N>& y)noexcept(noexcept(x.swap(y))); // array creation functionstemplate<class T, size_t N>constexpr array<remove_cv_t<T>, N> to_array(T(&a)[N]);template<class T, size_t N>constexpr array<remove_cv_t<T>, N> to_array(T(&&a)[N]); // tuple interfacetemplate<class T>struct tuple_size;template<size_t I,class T>struct tuple_element;template<class T, size_t N>struct tuple_size<array<T, N>>;template<size_t I,class T, size_t N>struct tuple_element<I, array<T, N>>;template<size_t I,class T, size_t N>constexpr T& get(array<T, N>&)noexcept;template<size_t I,class T, size_t N>constexpr T&& get(array<T, N>&&)noexcept;template<size_t I,class T, size_t N>constexprconst T& get(const array<T, N>&)noexcept;template<size_t I,class T, size_t N>constexprconst T&& get(const array<T, N>&&)noexcept;}
namespace std{template<class T, size_t N>struct array{// typesusing value_type= T;using pointer= T*;using const_pointer=const T*;using reference= T&;using const_reference=const T&;using size_type= size_t;using difference_type= ptrdiff_t;using iterator=/* implementation-defined */;using const_iterator=/* implementation-defined */;using reverse_iterator=std::reverse_iterator<iterator>;using const_reverse_iterator=std::reverse_iterator<const_iterator>; // no explicit construct/copy/destroy for aggregate type constexprvoid fill(const T& u);constexprvoid swap(array&)noexcept(is_nothrow_swappable_v<T>); // iteratorsconstexpr iterator begin()noexcept;constexpr const_iterator begin()constnoexcept;constexpr iterator end()noexcept;constexpr const_iterator end()constnoexcept; constexpr reverse_iterator rbegin()noexcept;constexpr const_reverse_iterator rbegin()constnoexcept;constexpr reverse_iterator rend()noexcept;constexpr const_reverse_iterator rend()constnoexcept; constexpr const_iterator cbegin()constnoexcept;constexpr const_iterator cend()constnoexcept;constexpr const_reverse_iterator crbegin()constnoexcept;constexpr const_reverse_iterator crend()constnoexcept; // capacityconstexprbool empty()constnoexcept;constexpr size_type size()constnoexcept;constexpr size_type max_size()constnoexcept; // element accessconstexpr reference operator[](size_type n);constexpr const_reference operator[](size_type n)const;constexpr reference at(size_type n);// freestanding-deletedconstexpr const_reference at(size_type n)const;// freestanding-deletedconstexpr reference front();constexpr const_reference front()const;constexpr reference back();constexpr const_reference back()const; constexpr T* data()noexcept;constexprconst T* data()constnoexcept;}; template<class T,class...U> array(T, U...)-> array<T,1+ sizeof...(U)>;}