私は、コードの打撃を試みたinserter
とback_inserter
は同じlst3
を作るが、私は新しい要素がlst3.begin()
前の位置に挿入されなければならないようinserter
が{4,3,2,1}
のリストを作るべきだと思います。なぜ彼らは同じ結果を出しますか? ありがとう!C++の `inserter`のメカニズムは何ですか?
int main() {
list<int> lst = {1,2,3,4};
list<int> lst3;
// copy(lst.cbegin(), lst.cend(), inserter(lst3, lst3.begin()));
copy(lst.cbegin(), lst.cend(), back_inserter(lst3));
for_each(lst.cbegin(), lst.cend(), [] (const int i) {cout<<i<<endl;});
return 0;
}
'std :: copy'の前に' lst3'に1つの要素(-1としましょう)を加えて、何が起こるかを見てください。 'initter(lst3、lst3.begin()) 'はあなたに' 1 2 3 4 -1'と 'back_inserter'を与えます-1.1 2 3 4' – Raxvan
IIUC、混乱は' lst3 .begin()を毎回実行します。 cppreferenceは 'inserter'の例でそれを説明しています:http://en.cppreference.com/w/cpp/iterator/inserter – chris