#include <iostream>
#include <vector>
#include <algorithm>
int main()
{
enum class En{A, B};
std::vector<En> vec{En::A, En::B, En::A, En::B, En::A, En::B, En::A};
for(const auto& i : vec) std::cout << int(i) << ", ";
std::cout << std::endl;
vec.erase(std::remove(std::begin(vec), std::end(vec), vec.front()),
std::end(vec));
for(const auto& i : vec) std::cout << int(i) << ", ";
std::cout << std::endl;
return 0;
}
イデオネ: http://ideone.com/NTPVyE
版画:
0、1、0、1、0、1、0、
1、0、0、0、
なぜこうなった?ベクトルの最初の要素だけを削除するべきではありませんか?
std::remove
最初の要素で止まらず、ベクトル全体を通過すると思います。一意でない要素を持つコレクションで消去削除イディオムを使用する方法はありますか?