0

私はどのように機能するかを理解しようとしています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#"か?

4

1 に答える 1