循环写错了。
for (int k = 1; k < arr.size(); k++)
{
if(arr[0] == arr[k]) {
arr.erase(arr.begin() + k);
}
你至少应该写
for (int k = 1; k < arr.size(); )
{
if(arr[0] == arr[k])
{
arr.erase(arr.begin() + k);
}
else
{
++k;
}
}
但无论如何最好使用标准算法std::remove。例如
arr.erase( std::remove( std::next( std::begin( arr ) ), std::end( arr ), arr[0] ), std::end( arr ) );
这是一个演示程序。
#include <iostream>
#include <vector>
#include <iterator>
#include <algorithm>
int main()
{
std::vector<int> arr = { 1, 1, 5, 5, 1, 1 };
arr.erase( std::remove( std::next( std::begin( arr ) ), std::end( arr ), arr[0] ),
std::end( arr ) );
for ( const auto &item : arr ) std::cout << item << ' ';
std::cout << '\n';
return 0;
}
它的输出是
1 5 5