我正在学习 C++ lambda 函数,这个可能很简单的问题给我带来了一些问题。
我有一个包含一些整数的向量。我正在尝试删除所有偶数。
我目前有它删除偶数,但是当我打印向量的内容时,最后仍然在向量中留下了一些重复的数据。
int main()
{
std::vector<int> v1 = {0,1,1,2,3,5,8,13,21,55,89};
for (const auto &i : v1) std::cout<< i << " ";
std::cout<<std::endl;
v1.erase(std::remove_if(v1.begin(), v1.end(), [](int i)
{ return (i % 2) == 0; }));
for (const auto &i : v1) std::cout<< i << " ";
}
输出:
0 1 1 2 3 5 8 13 21 55 89
1 1 3 5 13 21 55 89 55 89
我希望第二行的输出为:
1 1 3 5 13 21 55 89
编辑
感谢大家。我使用了错误版本的擦除(现在感觉很愚蠢)。这是正确的代码:
int main()
{
std::vector<int> v1 = {0,1,1,2,3,5,8,13,21,55,89};
for (const auto &i : v1) std::cout<< i << " ";
std::cout<<std::endl;
v1.erase(std::remove_if(v1.begin(), v1.end(), [](int i)
{ return (i % 2) == 0; }), v1.end());
for (const auto &i : v1) std::cout<< i << " ";
}