Namensräume
Varianten
Aktionen

Standardbibliothek-Header <array> (C++11)

Von cppreference.com
< cpp‎ | header
 
 
Header der Standardbibliothek
 

Dieser Header ist Teil der Container-Bibliothek.

Inhalt

Includes

(C++20)
Unterstützung für den Drei-Wege-Vergleichsoperator[edit]
std::initializer_list Klassenschablone[edit]

Klassen

(C++11)
fest dimensioniertes, inplace, zusammenhängendes Array
(Klassenvorlage) [edit]
erhält die Anzahl der Elemente eines Tupel-ähnlichen Typs
(Klassenvorlage) [edit]
erhält die Elementtypen eines Tupel-ähnlichen Typs
(Klassenvorlage) [edit]
ermittelt die Größe eines arrays
(Klassentemplatenspezialisierung) [bearbeiten]
ermittelt den Typ der Elemente von array
(Klassentemplatenspezialisierung) [bearbeiten]

Funktionen

(C++11)(C++11)(entfernt in C++20)(C++11)(entfernt in C++20)(C++11)(entfernt in C++20)(C++11)(entfernt in C++20)(C++11)(entfernt in C++20)(C++20)
vergleicht die Werte zweier arrays lexikographisch
(function template) [edit]
spezialisiert den Algorithmus std::swap
(function template) [edit]
(C++20)
erstellt ein std::array-Objekt aus einem eingebauten Array
(Funktionsschablone) [edit]
greift auf ein Element eines arrays zu
(Funktionstemplate) [bearbeiten]
Bereichszugriff
(C++11)(C++14)
gibt einen Iterator zum Anfang eines Containers oder Arrays zurück
(Funktionsvorlage) [bearbeiten]
(C++11)(C++14)
gibt einen Iterator zum Ende eines Containers oder Arrays zurück
(Funktionsvorlage) [bearbeiten]
gibt einen Reverse-Iterator zum Anfang eines Containers oder Arrays zurück
(function template) [bearbeiten]
(C++14)
gibt einen Reverse-End-Iterator für einen Container oder ein Array zurück
(function template) [bearbeiten]
(C++17)(C++20)
gibt die Größe eines Containers oder Arrays zurück
(Funktionsvorlage) [bearbeiten]
(C++17)
prüft, ob der Container leer ist
(function template) [bearbeiten]
(C++17)
erhält den Zeiger auf das zugrundeliegende Array
(function template) [bearbeiten]

[bearbeiten] Synopsis

// mostly freestanding
#include <compare>
#include <initializer_list>
 
namespace std {
  // class template array
  template<class T, size_t N>
  struct array; // partially freestanding
 
  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);
 
  // specialized algorithms
  template<class T, size_t N>
  constexpr void swap(array<T, N>& x, array<T, N>& y) noexcept(noexcept(x.swap(y)));
 
  // array creation functions
  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]);
 
  // tuple interface
  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;
}

[bearbeiten] Klassentemplate 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>;
 
    // no explicit construct/copy/destroy for aggregate type
 
    constexpr void fill(const T& u);
    constexpr void swap(array&) noexcept(is_nothrow_swappable_v<T>);
 
    // iterators
    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;
 
    // capacity
    constexpr bool empty() const noexcept;
    constexpr size_type size() const noexcept;
    constexpr size_type max_size() const noexcept;
 
    // element access
    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)>;
}