remove
пытается найти все элементы, которые сравнивают равными с тем, что вы ему передали.Если вы не скажете компилятору, как сравнивать hello
объекты со значением целого i
, он не сможет этого сделать.
Что вы, вероятно, хотели сделать, это просто удалить i-й элементвектор, если он удовлетворяет вашему критерию:
for (unsigned int i = 0; i < vector_t.size(); i++)
{
if (vector_t[i].x)
{
vector_t.erase(vector_t.begin() + i);
--i; // The next element is now at position i, don't forget it!
}
}
Самый идиоматичный способ - использовать std::remove_if
, как показано в ответе acgraig5075.