0

back_inserter_iterator と cin を接続しようとしています。cin と back_inserter でコピーを使用できることは理解していますが、以下を実行できない理由を知りたいと思っていました。

list<string> name;
back_insert_iterator<list<string>> ins_it(name);

while (cin >> ins_it);

以下は私が得ているエラーメッセージです:

エラー: 'std::istream {aka std::basic_istream}' 左辺値を 'std::basic_istream&&' にバインドできません</p>

ありがとう

4

3 に答える 3

3

それを行う標準的な方法(そのようなことがある場合):

list<string> name{
    istream_iterator<string>{cin}, 
    istream_iterator<string>{}};

また:

list<string> name;
copy(istream_iterator<string>{cin}, istream_iterator<string>{},
    back_inserter(name));
于 2013-04-23T15:26:49.810 に答える
0

operator>>() は挿入演算子ではなく、抽出演算子です。back inserter オブジェクトは、抽出ではなく挿入を想定しています。要約すると、operator>>(istream、inserter) がありません。

于 2013-04-23T15:50:15.787 に答える