Skip to content

Latest commit

 

History

History
181 lines (131 loc) · 8.2 KB

array.md

File metadata and controls

181 lines (131 loc) · 8.2 KB

array

  • array[meta header]
  • std[meta namespace]
  • class template[meta id-type]
  • cpp11[meta cpp]
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;
  });
}
  • ar.size()[link array/size.md]
  • ar[i][link array/op_at.md]
  • ar.begin()[link array/begin.md]
  • ar.end()[link array/end.md]

出力

4
2
5

バージョン

言語

  • C++11

処理系

  • Clang: ??
  • GCC: 4.7.0 [mark verified]
  • ICC: ??
  • Visual C++: 2008 (std::tr1) [mark verified], 2010 [mark verified], 2012 [mark verified]

関連項目

参照