我试图了解如何remove_if
工作(<<
重载),为此我想 remove_if 所有以“C”开头的字符串:
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#"
?