forward_list
概要
単方向リストを提供するコンテナである。C++03までは、listクラスによる双方向リストのみが提供されていた。 前方向走査のみが必要なケースでは、listクラスを使用すると余計なメモリを消費されることになり、手製のlinked-listが氾濫していた。 そこで、それらを一掃する目的でこのコンテナが追加された。
forward_listは、size()関数が提供されないことを除き、全ての一般コンテナ要件を満たす。 また、シーケンスコンテナ要件を満たさず、代わりとなるオペレーションが提供されている。 以下に、forward_listが提供するメンバ関数の一覧を示す。(オーバーロードの違いは無視する)
メンバ関数名 | セマンティクス |
---|---|
assign | clear() + insert_affter() |
get_allocator | |
before_begin | begin() の前を示すイテレータを返す ( before_begin()++ == begin() ) |
begin | 一般コンテナ要件と同じ |
end | 一般コンテナ要件と同じ |
cbegin | 一般コンテナ要件と同じ |
cend | 一般コンテナ要件と同じ |
empty | 一般コンテナ要件と同じ |
max_size | 一般コンテナ要件と同じ |
front | *begin() |
emplace_front | 要素を直接構築して先頭に挿入 |
push_front | 指定した要素のコピーを先頭に挿入 |
pop_front | erase_after(before_begin()) |
insert_affter | 指定した位置の後ろに指定した要素のコピーを挿入 |
emplace_affter | 指定した位置に後ろに直接構築した要素を挿入 |
erase_affter | 指定した位置の要素を削除 |
swap | 一般コンテナ要件と同じ |
resize | コンテナのサイズを変更 |
clear | 全要素の削除 |
splice_after | 指定した位置の後ろにコンテナの要素を移植 |
remove | 指定した値を持つ全要素を削除 |
remove_if | 指定したPredicateを満たす要素を全て削除 |
unique | 連続している重複した値を削除 |
merge | 指定した順序、もしくは昇順で指定したリストを移植 |
sort | リスト内をソート |
operator== | 一般コンテナ要件と同じ |
operator< | |
operator!= | 一般コンテナ要件と同じ |
operator> | |
operator>= | |
operator<= |
本節で解説する機能を使用するには、ヘッダファイル forward_listをインクルードする。
#include <forward_list>
int main() {
std::forward_list<int> flist {1,2,3};
for(auto& i : flist) {
std::cout << i << std::endl;
}
}