可能重复:
STL 删除没有按预期工作?
抱歉,我是 C++11 和迭代器的新手。这应该删除数组中的所有数字 3,但不会删除最后一个。为什么?
#include <algorithm>
#include <array>
#include <iostream>
int main() {
std::array<int, 8> a{{9, 3, 4, 5, 33, 5, 6, 3}};
int N(3);
std::remove(a.begin(), a.end(), N);
for (int i : a) {
std::cout << i << '\n';
}
}
我得到输出:
{ 9, 4, 5, 33, 5, 6, 6, 3 }
^
|
// the last 3 is still there