std::forward_list
| ヘッダ <forward_list> で定義 |
||
| template< class T, |
(1) | (C++11以降) |
| namespace pmr { template< class T > |
(2) | (C++17以降) |
std::forward_listは、コンテナの任意の位置からの要素の挿入と削除を高速にサポートするコンテナです。高速なランダムアクセスはサポートされていません。これは単方向連結リストとして実装されています。std::listと比較して、このコンテナは双方向イテレーションが不要な場合に、より空間効率の良いストレージを提供します。
リスト内、または複数のリスト間での要素の追加、削除、移動は、リスト内の他の要素を現在参照しているイテレータを無効化しません。しかし、要素を参照しているイテレータまたは参照は、対応する要素がリストから(erase_afterによって)削除されたときに無効化されます。
std::forward_listは、コンテナ(sizeメンバ関数がないことと、operator==の計算量が常に線形であること除く)、アロケータ認識コンテナ、そしてシーケンスコンテナの要件を満たしています。
|
|
(C++26以降) |
目次 |
[編集] テンプレートパラメータ
| T | - | 要素の型。
| ||||||||||||
| アロケータ | - | メモリの確保/解放、およびそのメモリ内の要素の構築/破棄に使用されるアロケータ。この型は アロケータ(Allocator) の要件を満たさなければならない。Allocator::value_type が T と同じでない場合、その振る舞いは未定義である(C++20まで)プログラムは不適格となる(C++20から)。 |
[編集] メンバ型
| メンバ型 | 定義 |
value_type
|
T |
allocator_type
|
Allocator |
size_type
|
符号なし整数型 (通常は std::size_t) |
difference_type
|
符号付き整数型 (通常は std::ptrdiff_t) |
reference
|
value_type& |
const_reference
|
const value_type& |
pointer
|
std::allocator_traits<Allocator>::pointer |
const_pointer
|
std::allocator_traits<Allocator>::const_pointer |
iterator
|
value_type への 旧前方イテレータ (LegacyForwardIterator) および 定数式イテレータ (ConstexprIterator)(C++26から) |
const_iterator
|
const value_type への LegacyForwardIteratorおよび ConstexprIterator(C++26 以降) |
[編集] メンバ関数
forward_listを構築する(公開メンバ関数) | |
forward_listを破棄する(公開メンバ関数) | |
| コンテナに値を代入する (公開メンバ関数) | |
| コンテナに値を代入する (公開メンバ関数) | |
| (C++23) |
コンテナに値の範囲を代入する (公開メンバ関数) |
| 関連付けられたアロケータを返す (公開メンバ関数) | |
要素アクセス | |
| 最初の要素にアクセスする (public メンバ関数) | |
イテレータ | |
| 先頭の前を指すイテレータを返す (公開メンバ関数) | |
| 先頭へのイテレータを返す (public メンバ関数) | |
| 末尾へのイテレータを返す (public メンバ関数) | |
容量 | |
| コンテナが空かどうかをチェックする (public メンバ関数) | |
| 可能な最大要素数を返す (public メンバ関数) | |
変更 | |
| 内容をクリアする (公開メンバ関数) | |
| 指定した要素の直後に要素を挿入する (公開メンバ関数) | |
| 指定した要素の直後に要素を直接構築する (公開メンバ関数) | |
| (C++23) |
指定した要素の直後に要素の範囲を挿入する (公開メンバ関数) |
| 指定した要素の直後の要素を削除する (公開メンバ関数) | |
| 先頭に要素を挿入する (公開メンバ関数) | |
| 先頭に要素を直接構築する (公開メンバ関数) | |
| (C++23) |
先頭に要素の範囲を追加する (公開メンバ関数) |
| 最初の要素を削除する (公開メンバ関数) | |
| 格納されている要素の数を変更する (公開メンバ関数) | |
| 内容を交換する (public メンバ関数) | |
操作 | |
| ソート済みの2つのリストをマージする (公開メンバ関数) | |
他のforward_listから要素を移動する(公開メンバ関数) | |
| 特定の基準を満たす要素を削除する (public member function) | |
| 要素の順序を反転する (public member function) | |
| 連続する重複した要素を削除する (公開メンバ関数) | |
| 要素をソートする (public member function) | |
[編集] 非メンバ関数
| (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つのforward_listの値を辞書順で比較する(関数テンプレート) |
| (C++11) |
std::swap アルゴリズムを特殊化する (関数テンプレート) |
| 特定の基準を満たすすべての要素を削除する (関数テンプレート) |
推論補助 |
(C++17以降) |
[編集] ノート
| 機能テストマクロ | 値 | 規格 | 機能 |
|---|---|---|---|
__cpp_lib_containers_ranges |
202202L |
(C++23) | コンテナのRangeコンストラクタとRange挿入 |
__cpp_lib_constexpr_containers |
202502L |
(C++26) | constexpr std::forward_list |
[編集] 例
| このセクションは未完成です 理由: 例がありません |
[編集] 関連項目
| 双方向リンクリスト (クラステンプレート) |