名前空間
変種
操作

名前付き要件: Container

提供: cppreference.com
< cpp‎ | named req
 
 
名前付き要件
 

Container は他のオブジェクトを格納するために使用されるオブジェクトです。 格納するオブジェクトによって使用されるメモリの管理を行います。

目次

[編集] 要件

  • コンテナの型 C
  • 要素の型 T
  • C 型のオブジェクト a, b

[編集]

名前 注釈
value_type T Eraseable
reference T&
const_reference const T&
iterator T を指すイテレータ ForwardIterator
const_iterator に変換可能
const_iterator T を指す const イテレータ ForwardIterator
difference_type 符号付き整数 iterator および const_iterator に対する iterator_traits::difference_type と同じでなければならない
size_type 符号なし整数 difference_type のすべての正の値を表現するのに十分大きい

[編集] メンバ関数および操作

戻り値の型 意味論 条件 計算量
C() C 空のコンテナを作成する 事後: C().empty() == true 定数時間
C(a) C a のコピーを作成する 事前: T は CopyInsertable でなければならない
事後: a == C(a)
線形時間
a = b C& a のすべての要素を b の要素から破棄またはムーブ代入する 事後: a == b 線形時間
(&a)->~C() void a のすべての要素を破棄しすべてのメモリを解放する 線形時間
a.begin() (const_)iterator a の最初の要素を指すイテレータ 定数時間
a.end() (const_)iterator a の最後の要素の次を指すイテレータ 定数時間
a.cbegin()(C++11およびそれ以降) const_iterator const_cast<const C&>(a).begin() 定数時間
a.cend()(C++11およびそれ以降) const_iterator const_cast<const C&>(a).end() 定数時間
a == b bool に変換可能 std::equal(a.begin(), a.end(), b.begin(), b.end())(C++14およびそれ以降) 事前: T は EqualityComparable でなければならない a.size() != b.size() の場合は定数時間[1]、そうでなければ線形時間
a != b bool に変換可能 !(a == b) 線形時間
a.swap(b) void ab の値を交換する 定数時間[2][3]
swap(a, b) void a.swap(b) 定数時間[2]
a.size() size_type distance(a.begin(), a.end()) 定数時間[3]
a.max_size() size_type b.size()、ただし b は有り得る最も大きなコンテナ 定数時間[3]
a.empty() bool に変換可能 a.begin() == a.end() 定数時間
注釈
  1. std::forward_list の場合は常に線形時間です。
  2. 2.0 2.1 (C++11およびそれ以降)std::array の場合は線形時間です。
  3. 3.0 3.1 3.2 (C++11以前)厳密な定数時間ではありません。
  • コンテナの iterator 型のオブジェクト i, j

が与えられたとき、式 i == j, i != j, i < j, i <= j, i >= j, i > j, i - j において、意味を変えずに、片方または両方をコンテナの const_iterator 型の同じ要素を参照するオブジェクトに置き換えることができます。

(C++14およびそれ以降)

[編集] コンテナのデータ競合

コンテナのスレッド安全性を参照してください。

[編集] その他の要件

C
T