この投稿では、印刷する方法について説明します std::list C++で。

リストは、二重にリンクされたリストとして実装され、両方向での反復を可能にするシーケンスコンテナです。 O(1) 挿入と削除の時間。これらは通常、他の標準シーケンスコンテナ(アレイまたはvector)よりもアイテムの取得に時間がかかります。

C++でリストを印刷する方法はたくさんありますが、以下で説明します。

1.範囲ベースのforループを使用する

推奨されるアプローチは、範囲ベースのforループを使用してリストコンテナー内の要素を印刷することです。これはでのみ機能することに注意してください C++11、および後で、 C++98、イテレータを使用できます。

ダウンロード  コードを実行する

出力:

blue
red
green

2.使用する std::copy 関数

もう1つのエレガントな解決策は、 std::copy リストの内容を出力ストリーム(この場合)にコピーします std::cout)出力イテレータの助けを借りて std::ostream_iterator.

ダウンロード  コードを実行する

出力:

blue
red
green

 
C++ 17では、 std::copystd::experimental::ostream_joiner ヘッダーで定義されています <experimental/iterator>。これは、連続するオブジェクトをに書き込むことができるシングルパス出力イテレータです std::cout、を使用して << 2つのオブジェクトごとに区切り文字で区切られた演算子。

コードを実行する

出力:

blue
red
green

3.使用する std::for_each 関数

使用することもできます std::for_each STLアルゴリズム。2つのイテレータによって定義された入力範囲を受け入れ、その範囲内の各要素に指定された関数を適用します。指定された関数は、単項関数、またはクラスのオブジェクトがオーバーロードしている可能性があります () 演算子またはラムダ式。

ダウンロード  コードを実行する

出力:

blue
red
green

4.イテレータの使用

イテレータを使用してリストを印刷することもできます。 whileループ内のリストの内容は変更しないため、 const_iterator、によって返されます cbegin()cend()。 C++ 11より前は、 begin()end().

ダウンロード  コードを実行する

出力:

blue
red
green

5.過負荷 << オペレーター

出力ストリーム(など cout)挿入を使用する (<<) 演算子。オーバーロードしてリストオブジェクトを受け入れることができます。基本的にオーバーロードする必要があります << 左側のostreamオブジェクトと右側のlistオブジェクトを認識する演算子。

ダウンロード  コードを実行する

出力:

blue
red
green

印刷については以上です std::list C++で。