私はどのように機能するかを理解しようとしていますremove_if
(<<
オーバーロードされています)。そのために、「C」で始まるすべての文字列を remove_if したい:
vector<string> langs = { "Python", "C++", "C", "Java", "C#" };
cout << "Initial vector: " << langs << " | Size = " << langs.size() << endl;
出力:Initial vector: Python C++ C Java C# | Size = 5
それから私は書きます:
auto it = remove_if(begin(langs), end(langs), [](const string& s)
{ return s[0]== 'C';});
cout << "After remove_if: " << langs << " | Size = " << langs.size() << endl;
出力 2 :After remove_if: Python Java C C# | Size = 5
私が理解していること:残っているべき要素が最初に削除され、*it
現在は等しい"C"
質問: はどうなり"C++"
ますか? 交換した場合"Java"
、その理由
for(auto& _it = it; _it != end(langs); _it++)
cout << *_it << " ";
出力3を与えます:C C#
そしてそうではありません"C", "Java", "C#"
か?