簡體   English   中英

無法將cin與back_insert_iterator連接

[英]cannot connect cin with back_insert_iterator

我正在嘗試連接back_inserter_iterator和cin,我知道我可以在cin和back_inserter中使用copy,但是想知道為什么我不能執行以下操作

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

while (cin >> ins_it);

以下是我收到的錯誤消息:

錯誤:無法將'std :: istream {aka std :: basic_istream}'左值綁定到'std :: basic_istream &&'

謝謝

想知道為什么我不能執行以下操作...

原因是std::back_insert_iterator的設計。

該類型僅在使用operator =時執行向后插入。 這就是為什么std::copy 工作。

做到這一點的規范方法(如果有這樣的事情):

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

要么:

list<string> name;
copy(istream_iterator<string>{cin}, istream_iterator<string>{},
    back_inserter(name));

運算符>>()不是插入運算符,它是提取運算符。 后置插入器對象期望插入,而不是提取。 總而言之,沒有運算符>>(istream,插入器)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM