- 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
以上であること
名前 |
説明 |
対応バージョン |
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 |
名前 |
説明 |
対応バージョン |
to_array |
組み込み一次元配列から array を作成する |
C++20 |
名前 |
説明 |
対応バージョン |
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]
- Clang: ??
- GCC: 4.7.0 [mark verified]
- ICC: ??
- Visual C++: 2008 (std::tr1) [mark verified], 2010 [mark verified], 2012 [mark verified]