• Class / Function / Type

      std::
    • Header file

      <>
    • Other / All

    最終更新日時(UTC):
    が更新

    履歴 編集

    class template
    <array>

    std::array

    namespace std {
      template <class T, std::size_t N>
      struct array;
    }
    

    概要

    arrayは固定長のオブジェクトを保持するシーケンスコンテナで、各要素は連続して格納される。従来のCスタイルの配列のパフォーマンスを保ったまま、シーケンスのサイズの取得、要素の代入のサポートなど、標準コンテナの恩恵を受ける事ができる。また、境界チェック(範囲外の要素にアクセスしようとしていないかのチェック)付きの要素アクセスもサポートしている。

    arrayは、デフォルトコンストラクタで構築されたarrayオブジェクトが空でない点と、swap()の計算量が定数時間でない点を除いて、コンテナとリバーシブルコンテナの全ての要件を満たす。

    テンプレートパラメータは、以下を意味する:

    • T : 配列の要素型
    • N : 配列の要素数。0以上であること

    メンバ関数

    構築/破棄

    名前 説明 対応バージョン
    (initializer) arrayの初期化 C++11

    要素へのアクセス

    名前 説明 対応バージョン
    at 境界チェック付きの要素アクセス C++11
    operator[] 境界チェック無しの要素アクセス C++11
    front 先頭要素への参照を取得する C++11
    back 末尾要素への参照を取得する C++11
    data コンテナ内部に保持されている生の配列へ直接アクセスする C++11

    イテレータ

    名前 説明 対応バージョン
    begin 先頭要素を指すイテレータを取得する C++11
    end 末尾の1つ次の要素を指すイテレータを取得する C++11
    cbegin 先頭要素を指す読み取り専用イテレータを取得する C++11
    cend 末尾の次の要素を指す読み取り専用イテレータを取得する C++11
    rbegin 末尾の要素を指す逆イテレータを取得する C++11
    rend 先頭の1つ前の要素を指す逆イテレータを取得する C++11
    crbegin 末尾の要素を指す読み取り専用逆イテレータを取得する C++11
    crend 先頭の1つ前の要素を指す読み取り専用逆イテレータを取得する C++11

    領域

    名前 説明 対応バージョン
    empty コンテナが空かどうかを判定する C++11
    size 要素数を取得する C++11
    max_size 格納可能な最大の要素数を取得する C++11

    コンテナの変更

    名前 説明 対応バージョン
    fill コンテナを特定の要素で埋める C++11
    swap 別のarrayオブジェクトとコンテナの中身を入れ替える C++11

    メンバ型

    名前 説明 対応バージョン
    reference 要素の参照型 T& C++11
    const_reference 読取り専用の要素の参照型 const T& C++11
    iterator ランダムアクセスイテレータ (実装定義) C++11
    const_iterator 読取り専用のランダムアクセスイテレータ (実装定義) C++11
    reverse_iterator 逆イテレータ reverse_iterator<iterator> C++11
    const_reverse_iterator 読み取り専用の逆イテレータ reverse_iterator<const_iterator> C++11
    size_type 符号なし整数型 size_t C++11
    difference_type 符号付き整数型 ptrdiff_t C++11
    pointer 要素のポインタ型 T* C++11
    const_pointer 読取り専用の要素のポインタ型 const T* C++11
    value_type 要素の型 T C++11

    非メンバ関数

    名前 説明 対応バージョン
    operator== 等値比較 C++11
    operator!= 非等値比較 C++11
    operator<=> 三方比較 C++20
    operator< 左辺が右辺より小さいかの判定を行う C++11
    operator<= 左辺が右辺以下かの判定を行う C++11
    operator> 左辺が右辺より大きいかの判定を行う C++11
    operator>= 左辺が右辺以上かの判定を行う C++11
    swap 2つの array オブジェクトを入れ替える C++11

    配列作成関数

    名前 説明 対応バージョン
    to_array 組み込み一次元配列から array を作成する C++20

    推論補助

    名前 説明 対応バージョン
    (deduction_guide) クラステンプレートの推論補助 C++17

    タプルインタフェースサポート

    名前 説明 対応バージョン
    tuple_size 静的な要素数取得(class template) C++11
    tuple_element 静的な要素の型取得(class template) C++11
    get 要素を取得する(function template) C++11

    #include <iostream>
    #include <array>
    #include <algorithm>
    
    int main()
    {
      // 3要素のint型配列を定義し、初期化子リストで初期化
      std::array<int, 3> ar = {3, 1, 4};
    
      // size()メンバ関数による要素数取得
      for (std::size_t i = 0; i < ar.size(); ++i) {
        ++ar[i]; // operator[]で任意の要素にランダムアクセス
      }
    
      // イテレータによる要素の横断
      std::for_each(ar.begin(), ar.end(), [](int x) {
        std::cout << x << std::endl;
      });
    }
    

    出力

    4
    2
    5
    

    バージョン

    言語

    • C++11

    処理系

    関連項目

    参照