<array>[added with TR1]
array
· get
· operator!=
· operator==
· operator<
· operator<=
· operator>
· operator>=
· swap
· tuple_element
· tuple_size
Include the C++11
header <array> to define the container
template class array and several supporting templates.
Beginning with C++11,
some functions declared in this header
use constexpr to signal that they are treated as
compile-time constants.
namespace std {
template<class Ty, size_t N>
class array;
// TEMPLATE FUNCTIONS
template<class Ty, size_t N>
bool operator==(
const array<Ty, N>& left,
const array<Ty, N>& right);
template<class Ty, size_t N>
bool operator!=(
const array<Ty, N>& left,
const array<Ty, N>& right);
template<class Ty, size_t N>
bool operator<(
const array<Ty, N>& left,
const array<Ty, N>& right);
template<class Ty, size_t N>
bool operator<=(
const array<Ty, N>& left,
const array<Ty, N>& right);
template<class Ty, size_t N>
bool operator>(
const array<Ty, N>& left,
const array<Ty, N>& right);
template<class Ty, size_t N>
bool operator>=(
const array<Ty, N>& left,
const array<Ty, N>& right);
template<class Ty, size_t N>
void swap(
array<Ty, N>& left,
array<Ty, N>& right)
noexcept(noexcept(left.swap(right)));
// tuple-LIKE INTERFACE
template<int Idx, class T, size_t N>
RI& get(array<T, N>& arr) noexcept;
template<int Idx, class T, size_t N>
const RI& get(const array<T, N>& arr) noexcept;
template<int Idx, class T, size_t N>
RI&& get(array<T, N>&& arr);
template<size_t Idx, class T, size_t N> [added with C++11]
class tuple_element<Idx, array<T, N> >;
template<class T, size_t N>
class tuple_size<array<T, N> >;
namespace tr1 {
using std::array; using std::get; [added with C++11]
using std::tuple_element; using std::tuple_size;
} // namespace tr1
} // namespace std
arrayarray
· assign
· at
· back
· begin
· cbegin
· cend
· const_iterator
· const_pointer
· const_reference
· const_reverse_iterator
· crbegin
· crend
· data
· difference_type
· empty
· end
· fill
· front
· iterator
· max_size
· operator=
· operator[]
· pointer
· rbegin
· reference
· rend
· reverse_iterator
· size
· size_type
· swap
· value_type
template<class Ty, size_t N>
class array {
public:
// NESTED TYPES
typedef size_t size_type;
typedef ptrdiff_t difference_type;
typedef Ty& reference;
typedef const Ty& const_reference;
typedef Ty *pointer;
typedef const Ty *const_pointer;
typedef T0 iterator;
typedef T1 const_iterator;
typedef Ty value_type;
typedef reverse_iterator<iterator> reverse_iterator;
typedef reverse_iterator<const_iterator> const_reverse_iterator;
// CONSTRUCTORS (exposition only)
array();
array(const array& right);
// MODIFICATION
void assign(const Ty& val); [removed with C++11]
void fill(const Ty& val); [added with C++11]
array& operator=(const array& right); // exposition only
void swap(array& right)
noexcept(noexcept(swap(declval<Ty&>(), declval<Ty&>())));
// ITERATORS
iterator begin() noexcept;
const_iterator begin() const noexcept;
iterator end() noexcept;
const_iterator end() const noexcept;
reverse_iterator rbegin() noexcept;
const_reverse_iterator rbegin() const noexcept;
reverse_iterator rend() noexcept;
const_reverse_iterator rend() const noexcept;
const_iterator cbegin() const noexcept; [added with C++11]
const_iterator cend() const noexcept; [added with C++11]
const_reverse_iterator crbegin() const noexcept; [added with C++11]
const_reverse_iterator crend() const noexcept; [added with C++11]
// SIZE QUERIES
constexpr size_type size() const noexcept;
constexpr size_type max_size() const noexcept;
constexpr bool empty() const noexcept;
// ELEMENT ACCESS
reference at(size_type off);
constexpr const_reference at(size_type off) const;
reference operator[](size_type off);
constexpr const_reference operator[](size_type off) const;
reference front();
constexpr const_reference front() const;
reference back();
constexpr const_reference back() const;
Ty *data() noexcept;
const Ty *data() const noexcept;
};
The template class describes an object that controls a sequence of
length N of elements of type Ty. The sequence
is stored as an array of Ty,
contained in the array<Ty, N> object.
The type has a default constructor
array()
and a default assignment operator
operator=, and
satisfies the requirements for an aggregate.
Thus, objects of type array<Ty, N>
can be initialized with an aggregate initializer. For example:
array<int, 4> ai = { 1, 2, 3 };
creates the object ai which holds four integer values,
initializes the first three elements to the values 1, 2, and 3
respectively, and initializes the fourth element to 0.
array::arrayarray(); array(const array& right);
The first constructor leaves the controlled sequence uninitialized
(or default initialized). The second constructor
initializes the controlled sequence with the sequence
[right.begin(),
right.end()).
array::assignvoid assign(const Ty& val); [removed with C++11]
The member function replaces the sequence controlled by *this
with a repetition of N elements of value val.
array::atreference at(size_type off); constexpr const_reference at(size_type off) const;
The member functions return a reference to the element of the
controlled sequence at position off. If that position
is invalid, the function throws an object of class out_of_range.
array::backreference back(); constexpr const_reference back() const;
The member functions return a reference to the last element of the controlled sequence, which must be non-empty.
array::beginiterator begin() noexcept; const_iterator begin() const noexcept;
The member functions return a random-access iterator that points at the first element of the sequence (or just beyond the end of an empty sequence).
array::cbeginconst_iterator cbegin() const noexcept; [added with C++11]
The member function returns a random-access iterator that points at the first element of the sequence (or just beyond the end of an empty sequence).
array::cendconst_iterator cend() const noexcept; [added with C++11]
The member function returns a random-access iterator that points just beyond the end of the sequence.
array::const_iteratortypedef T1 const_iterator;
The type describes an object that can serve as a constant random-access
iterator for the controlled sequence. It is described here as a synonym for
the implementation-specific type T1.
array::const_pointertypedef const Ty *const_pointer;
The type describes an object that can serve as a constant pointer to elements of the sequence.
array::const_referencetypedef const Ty& const_reference;
The type describes an object that can serve as a constant reference to an element of the controlled sequence.
array::const_reverse_iteratortypedef reverse_iterator<const_iterator> const_reverse_iterator;
The type describes an object that can serve as a constant reverse iterator for the controlled sequence.
array::crbeginconst_reverse_iterator crbegin() const noexcept; [added with C++11]
The member function returns a reverse iterator that points just beyond the end of the controlled sequence. Hence, it designates the beginning of the reverse sequence.
array::crendconst_reverse_iterator crend() const noexcept; [added with C++11]
The member function returns a reverse iterator that points at the first element of the sequence (or just beyond the end of an empty sequence)). Hence, it designates the end of the reverse sequence.
array::dataTy *data() noexcept; const Ty *data() const noexcept;
The member functions return the address of the first element in the controlled sequence.
array::difference_typetypedef ptrdiff_t difference_type;
The signed integer type describes an object that can represent the difference
between the addresses of any two elements in the controlled sequence. It is
a synonym for the type ptrdiff_t.
array::emptyconstexpr bool empty() const noexcept;
The member function returns true only if N == 0.
array::enditerator end() noexcept; const_iterator end() const noexcept;
The member functions return a random-access iterator that points just beyond the end of the sequence.
array::fillvoid fill(const Ty& val); [added with C++11]
The member function replaces the sequence controlled by *this
with a repetition of N elements of value val.
array::frontreference front(); constexpr const_reference front() const;
The member functions return a reference to the first element of the controlled sequence, which must be non-empty.
array::iteratortypedef T0 iterator;
The type describes an object that can serve as a random-access
iterator for the controlled sequence. It is described here as a synonym for
the implementation-specific type T0.
array::max_sizeconstexpr size_type max_size() const noexcept;
The member function returns N.
array::operator=array& operator=(const array& right);
The operator assigns each element of right to
the corresponding element of the controlled sequence.
It returns *this.
array::operator[]reference operator[](size_type off); const_reference operator[](size_type off) const;
The member functions return a reference to the element of the
controlled sequence at position off. If that position
is invalid, the behavior is undefined.
array::pointertypedef Ty *pointer;
The type describes an object that can serve as a pointer to elements of the sequence.
array::rbeginreverse_iterator rbegin() noexcept; const_reverse_iterator rbegin() const noexcept;
The member functions return a reverse iterator that points just beyond the end of the controlled sequence. Hence, it designates the beginning of the reverse sequence.
array::referencetypedef Ty& reference;
The type describes an object that can serve as a reference to an element of the controlled sequence.
array::rendreverse_iterator rend() noexcept; const_reverse_iterator rend() const noexcept;
The member functions return a reverse iterator that points at the first element of the sequence (or just beyond the end of an empty sequence)). Hence, it designates the end of the reverse sequence.
array::reverse_iteratortypedef reverse_iterator<iterator> reverse_iterator;
The type describes an object that can serve as a reverse iterator for the controlled sequence.
array::sizeconstexpr size_type size() const noexcept;
The member function returns N.
array::size_typetypedef size_t size_type;
The unsigned integer type describes an object that can represent the length
of any controlled sequence. It is a synonym for the type size_t.
array::swapvoid swap(array& right)
noexcept(noexcept(swap(declval<Ty&>(), declval<Ty&>())));
The member function swaps the controlled sequences between *this
and right. It performs a number of element assignments and
constructor calls proportional to N.
array::value_typetypedef Ty value_type;
The type is a synonym for the template parameter Ty.
gettemplate<int Idx, class T, size_t N>
RI& get(array<T, N>& arr) noexcept;
template<int Idx, class T, size_t N>
const RI& get(const array<T, N>& arr) noexcept;
template<int Idx, class T, size_t N>
RI&& get(array<T, N>&& arr);
The template functions return a reference to arr[Idx].
operator!=template<Ty, size_t N>
bool operator!=(
const array<Ty, N>& left,
const array<Ty, N>& right);
The template function returns !(left == right).
operator==template<Ty, size_t N>
bool operator==(
const array<Ty, N>& left,
const array<Ty, N>& right);
The template function overloads operator== to compare two objects
of template class array. The function returns
equal(left.begin(),
left.end(), right.begin()).
operator<template<Ty, size_t N>
bool operator<(
const array<Ty, N>& left,
const array<Ty, N>& right);
The template function overloads operator< to compare two objects
of template class array. The function returns
lexicographical_compare(left.begin(),
left.end(), right.begin()).
operator<=template<Ty, size_t N>
bool operator<=(
const array<Ty, N>& left,
const array<Ty, N>& right);
The template function returns !(right < left).
operator>template<Ty, size_t N>
bool operator>(
const array<Ty, N>& left,
const array<Ty, N>& right);
The template function returns right < left.
operator>=template<Ty, size_t N>
bool operator>=(
const array<Ty, N>& left,
const array<Ty, N>& right);
The template function returns !(left < right).
swaptemplate<class Ty, size_t N>
void swap(
array<Ty, N>& left,
array<Ty, N>& right)
noexcept(noexcept(swap(left.swap(right))));
The template function executes left.swap(right).
tuple_elementtemplate<size_t Idx, class T, size_t N> [added with C++11]
class tuple_element<Idx, <array<T, N> > {
typedef T type;
};
The template is a specialization of the template class
tuple_element. It
has a nested typedef type
that is a synonym for the type of the Idx element
of the array.
tuple_sizetemplate<class T, size_t N>
class tuple_size<array<T, N> > {
static const unsigned value = N;
};
The template is a specialization of the template class
tuple_size. It
has a member value that is an integral
constant expression whose value is N, the size of the array.
See also the Table of Contents and the Index.
Copyright (c) by P.J. Plauger. All rights reserved.