サーチ…


前書き

std::forward_listは、コンテナ内のどこからでも要素の高速挿入と削除をサポートするコンテナです。高速ランダムアクセスはサポートされていません。これは単一リンクリストとして実装されており、基本的にはCでの実装と比較してオーバーヘッドがありませんstd::listと比較して、このコンテナは双方向の反復が必要ない場合に、より効率的なストレージを提供します。

備考

リスト内の要素の追加、削除、および移動は、現在リスト内の他の要素を参照しているイテレータを無効にしません。ただし、要素を参照するイテレータまたは参照は、対応する要素がリストから削除されると無効になります(erase_afterを介して)。 std :: forward_listはContainerの要件を満たしています(サイズメンバ関数を除いて、演算子==の複雑さは常に線形です)、AllocatorAwareContainerとSequenceContainer。

#include <forward_list>
#include <string>
#include <iostream>

template<typename T>
std::ostream& operator<<(std::ostream& s, const std::forward_list<T>& v) {
    s.put('[');
    char comma[3] = {'\0', ' ', '\0'};
    for (const auto& e : v) {
        s << comma << e;
        comma[0] = ',';
    }
    return s << ']';
}

int main() 
{
    // c++11 initializer list syntax:
    std::forward_list<std::string> words1 {"the", "frogurt", "is", "also", "cursed"};
    std::cout << "words1: " << words1 << '\n';
 
    // words2 == words1
    std::forward_list<std::string> words2(words1.begin(), words1.end());
    std::cout << "words2: " << words2 << '\n';
 
    // words3 == words1
    std::forward_list<std::string> words3(words1);
    std::cout << "words3: " << words3 << '\n';
 
    // words4 is {"Mo", "Mo", "Mo", "Mo", "Mo"}
    std::forward_list<std::string> words4(5, "Mo");
    std::cout << "words4: " << words4 << '\n';
}

出力:

words1: [the, frogurt, is, also, cursed]
words2: [the, frogurt, is, also, cursed]
words3: [the, frogurt, is, also, cursed]
words4: [Mo, Mo, Mo, Mo, Mo]

メソッド

メソッド名定義
operator= コンテナに値を代入する
assign コンテナに値を代入する
get_allocator 関連付けられたアロケータを返します。
------ ------
要素アクセス
front 最初の要素にアクセスする
------ ------
イテレータ
before_begi n 開始前に要素にイテレータを返します
cbefore_begin 開始前に要素に一定のイテレータを返します
begin イテレータを最初に返します
cbegin constイテレータを先頭に返す
end イテレータを最後まで返します。
cend イテレータを最後まで返します。
容量
empty コンテナが空であるかどうかをチェックします。
max_size 要素の可能な最大数を返します。
修飾子
clear 内容をクリアする
insert_after 要素の後ろに要素を挿入する
emplace_after 要素の後ろに要素を組み立てる
erase_after 要素の後の要素を消去する
push_front 最初に要素を挿入する
emplace_front 最初に要素をインプレースで構築する
pop_front 最初の要素を削除します。
resize 格納される要素の数を変更する
swap 内容を交換する
オペレーション
merge 2つのソートされたリストをマージします。
splice_after 要素を別のforward_listから移動する
remove 特定の基準を満たす要素を削除する
remove_if 特定の基準を満たす要素を削除する
reverse 要素の順序を逆にする
unique 連続する重複要素を削除する
sort 要素をソートする


Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow