3
我在學習C++ lambda函數,這個可能很容易的問題是給我一些問題。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 << " ";
}
OUTPUT:
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 << " ";
}
看看你正在調用哪個版本的'erase'。 – chris