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;
    }
}

results matching ""

    No results matching ""