Namespaces
Variants

Standard library header <array> (C++11)

From cppreference.net
Standard library headers

Cet en-tête fait partie de la bibliothèque de conteneurs .

Table des matières

Inclusions

(C++20)
Opérateur de comparaison à trois voies support
std::initializer_list modèle de classe

Classes

(C++11)
tableau contigu fixe en place
(modèle de classe)
(C++11)
obtient le nombre d'éléments d'un type de type tuple
(modèle de classe)
obtient les types des éléments d'un type de type tuple
(modèle de classe)
obtient la taille d'un array
(spécialisation de modèle de classe)
obtient le type des éléments du array
(spécialisation de modèle de classe)

Fonctions

(C++11) (C++11) (supprimé en C++20) (C++11) (supprimé en C++20) (C++11) (supprimé en C++20) (C++11) (supprimé en C++20) (C++11) (supprimé en C++20) (C++20)
compare lexicographiquement les valeurs de deux array s
(modèle de fonction)
spécialise l'algorithme std::swap
(modèle de fonction)
(C++20)
crée un objet std::array à partir d'un tableau natif
(modèle de fonction)
accède à un élément d'un array
(fonction template)
Accès aux plages
(C++11) (C++14)
retourne un itérateur vers le début d'un conteneur ou d'un tableau
(fonction template)
(C++11) (C++14)
retourne un itérateur vers la fin d'un conteneur ou d'un tableau
(fonction template)
retourne un itérateur inverse vers le début d'un conteneur ou d'un tableau
(modèle de fonction)
(C++14)
retourne un itérateur de fin inverse pour un conteneur ou un tableau
(modèle de fonction)
(C++17) (C++20)
retourne la taille d'un conteneur ou d'un tableau
(modèle de fonction)
(C++17)
vérifie si le conteneur est vide
(modèle de fonction)
(C++17)
obtient le pointeur vers le tableau sous-jacent
(fonction template)

Synopsis

// principalement autonome
#include <compare>
#include <initializer_list>
namespace std {
  // modèle de classe array
  template<class T, size_t N>
  struct array; // partiellement autonome
  template<class T, size_t N>
  constexpr bool 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);
  // algorithmes spécialisés
  template<class T, size_t N>
  constexpr void swap(array<T, N>& x, array<T, N>& y) noexcept(noexcept(x.swap(y)));
  // fonctions de création d'array
  template<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]);
  // interface tuple
  template<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>
  constexpr const T& get(const array<T, N>&) noexcept;
  template<size_t I, class T, size_t N>
  constexpr const T&& get(const array<T, N>&&) noexcept;
}

Modèle de classe std::array

namespace std {
  template<class T, size_t N>
  struct array
  {
    // types
    using 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>;
    // pas de constructeur/copie/destruction explicite pour le type agrégat
    constexpr void fill(const T& u);
    constexpr void swap(array&) noexcept(is_nothrow_swappable_v<T>);
    // itérateurs
    constexpr iterator begin() noexcept;
    constexpr const_iterator begin() const noexcept;
    constexpr iterator end() noexcept;
    constexpr const_iterator end() const noexcept;
    constexpr reverse_iterator rbegin() noexcept;
    constexpr const_reverse_iterator rbegin() const noexcept;
    constexpr reverse_iterator rend() noexcept;
    constexpr const_reverse_iterator rend() const noexcept;
    constexpr const_iterator cbegin() const noexcept;
    constexpr const_iterator cend() const noexcept;
    constexpr const_reverse_iterator crbegin() const noexcept;
    constexpr const_reverse_iterator crend() const noexcept;
    // capacité
    constexpr bool empty() const noexcept;
    constexpr size_type size() const noexcept;
    constexpr size_type max_size() const noexcept;
    // accès aux éléments
    constexpr reference operator[](size_type n);
    constexpr const_reference operator[](size_type n) const;
    constexpr reference at(size_type n);             // freestanding-deleted
    constexpr const_reference at(size_type n) const; // freestanding-deleted
    constexpr reference front();
    constexpr const_reference front() const;
    constexpr reference back();
    constexpr const_reference back() const;
    constexpr T* data() noexcept;
    constexpr const T* data() const noexcept;
  };
  template<class T, class... U>
  array(T, U...) -> array<T, 1 + sizeof...(U)>;
}