Возможный дубликат:
Удалить все элементы из c ++ std :: vector
Я думаю, что использование начала в итераторе приводит в замешательство, поскольку оно повторяется только 26 раз и пропускает каждые 2 элемента. Как еще я могу это сделать?
void clearVector() {
for (int i = 0; i < 52; i++) {
vector.erase(vector.begin() + i);
}
}
Вы называете std::vector::clear()
метод:
myVector.clear();
где я изменил имя экземпляра с vector
в myVector
, Не рекомендуется использовать имя класса для экземпляра.
std::vector
имеет clear
член, вы знаете:
void clearVector() {
vector.clear();
}
В любом случае, поскольку вы стираете слева, размер также будет уменьшаться. Это работает так, как вы намереваетесь, хотя и неэффективно, потому что на каждой итерации придется делать O (N) копий вперед.
void clearVector() {
for (int i = 0; i < 52; i++) {
vector.erase(vector.begin());
}
}
Вы можете использовать std :: vector :: clear (), чтобы очистить элементы, или заменить пустой контейнер намного быстрее.
vec.clear();
или же
std::vector<DataType>().swap(vec);
Примечание: ваша переменная vector
не очень хорошее имя переменной, лучше поменяйте его на другое.
vec.erase(vec.begin() /* first you want delete */,
vec.begin() + vec.size() /* 1 beyond the last you want to delete */);
// or if you have to erase all elements:
vec.clear();
так что вам не нужно повторять.