Namespaces
Variants

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

From cppreference.net
Standard library headers

このヘッダは containers ライブラリの一部です。

翻訳の説明: - 「Contents」→「目次」に翻訳 - C++関連の専門用語(Includes, Classes, Functions, Range access, Synopsis, std::array)は原文のまま保持 - HTMLタグ、属性、コード部分は一切変更せず - 数値や記号はそのまま維持 - フォーマットと構造は完全に保持

目次

Includes

(C++20)
三方比較演算子 サポート
std::initializer_list クラステンプレート

クラス

(C++11)
固定サイズのインプレース連続配列
(クラステンプレート)
(C++11)
タプルライクな型の要素数を取得する
(クラステンプレート)
tuple-like型の要素型を取得する
(クラステンプレート)
array のサイズを取得する
(クラステンプレートの特殊化)
array の要素の型を取得する
(クラステンプレートの特殊化)

関数

(C++11) (C++11) (C++20で削除) (C++11) (C++20で削除) (C++11) (C++20で削除) (C++11) (C++20で削除) (C++11) (C++20で削除) (C++20)
2つの array の値を辞書順で比較する
(関数テンプレート)
std::swap アルゴリズムを特殊化
(関数テンプレート)
(C++20)
組み込み配列から std::array オブジェクトを作成する
(関数テンプレート)
array の要素にアクセスする
(関数テンプレート)
レンジアクセス
(C++11) (C++14)
コンテナまたは配列の先頭を指すイテレータを返す
(関数テンプレート)
(C++11) (C++14)
コンテナまたは配列の終端を指すイテレータを返す
(関数テンプレート)
コンテナまたは配列の先頭への逆方向イテレータを返す
(関数テンプレート)
(C++14)
コンテナまたは配列の逆方向終端イテレータを返す
(関数テンプレート)
(C++17) (C++20)
コンテナまたは配列のサイズを返す
(関数テンプレート)
(C++17)
コンテナが空かどうかをチェックする
(関数テンプレート)
(C++17)
基となる配列へのポインタを取得する
(関数テンプレート)

概要

// 主にフリースタンディング
#include <compare>
#include <initializer_list>
namespace std {
  // クラステンプレート array
  template<class T, size_t N>
  struct array; // 部分的にフリースタンディング
  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);
  // 特殊化されたアルゴリズム
  template<class T, size_t N>
  constexpr void swap(array<T, N>& x, array<T, N>& y) noexcept(noexcept(x.swap(y)));
  // 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]);
  // タプルインターフェース
  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;
}

クラステンプレート std::array

namespace std {
  template<class T, size_t N>
  struct array
  {
    // 型
    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>;
    // 集約型の明示的な構築/コピー/破棄は不要
    constexpr void fill(const T& u);
    constexpr void swap(array&) noexcept(is_nothrow_swappable_v<T>);
    // イテレータ
    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;
    // 容量
    constexpr bool empty() const noexcept;
    constexpr size_type size() const noexcept;
    constexpr size_type max_size() const noexcept;
    // 要素アクセス
    constexpr reference operator[](size_type n);
    constexpr const_reference operator[](size_type n) const;
    constexpr reference at(size_type n);             // フリースタンディング削除
    constexpr const_reference at(size_type n) const; // フリースタンディング削除
    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)>;
}