Удалить все элементы в векторе Stack Overflow

Возможный дубликат:
Удалить все элементы из c ++ std :: vector

Я думаю, что использование начала в итераторе приводит в замешательство, поскольку оно повторяется только 26 раз и пропускает каждые 2 элемента. Как еще я могу это сделать?

void clearVector() {
for (int i = 0; i < 52; i++) {
vector.erase(vector.begin() + i);
}
}

-4

Решение

Вы называете std::vector::clear() метод:

myVector.clear();

где я изменил имя экземпляра с vector в myVector, Не рекомендуется использовать имя класса для экземпляра.

15

Другие решения

std::vector имеет clear член, вы знаете:

void clearVector() {
vector.clear();
}

В любом случае, поскольку вы стираете слева, размер также будет уменьшаться. Это работает так, как вы намереваетесь, хотя и неэффективно, потому что на каждой итерации придется делать O (N) копий вперед.

void clearVector() {
for (int i = 0; i < 52; i++) {
vector.erase(vector.begin());
}
}
9

Вы можете использовать std :: vector :: clear (), чтобы очистить элементы, или заменить пустой контейнер намного быстрее.

vec.clear();

или же

std::vector<DataType>().swap(vec);

Примечание: ваша переменная vector не очень хорошее имя переменной, лучше поменяйте его на другое.

3

      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();

так что вам не нужно повторять.

2
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector