Итак, у меня есть вектор целых чисел без знака (vector<unsigned int>
называется vector1
). У меня есть еще один вектор созданной мной структуры (vector<struct>
называется vector2
). vector<int>
содержит целое число, которое является индексом vector<struct>
. Например, допустим, что vector<int = {5, 17, 18, 19}
. Это означает vector2.at(5) == vector2.at(vector1.at(0))
.
В структуре у меня есть логическая переменная с именем var
. В большинстве случаев var
ложно. Я хочу удалить все элементы в vector1
, у которых var
= true.
Я сделал следующее:
for (unsigned int i = 0; i < vector1.size(); i++)
{
if (vector2.at(vector1.at(i)).var)
vector1.erase(vector.begin() + i);
}
Единственная проблема заключается в том, что он не удаляет все истинные элементы. Я запускал цикл for несколько раз, чтобы удалить все значения. Это правильное поведение? Если это не так, где я ошибся?
if (vector2.at(vector1.at(i)).var)
?int
не имеет членаvar
. - person Joseph Mansfield   schedule 06.02.2013