Как из std::vector удалить диапазон элементов?

166
11 октября 2018, 19:10

Мне нужно написать програму которая с вектора удаляет диапазон значений. Мой код:

std::vector<int> vector = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
int begin = 2;
int end = 4;
for (int index = begin; index <= end; )
{
    vector.erase(vector.begin() + index);
}

Я так понимаю мне нужно удалить с одного и того же индекса значения - количество диапазона . Но у меня крешится програма. Что не так?

P.S да через erase можно диапазон удалить. но мне свое нужно написать

Новое:

for (int index = begin; index <= end; ++index)
{
    vector.erase(vector.begin() + index);
}
Answer 1
for (int index = begin; index <= end; )
{
    vector.erase(vector.begin() + index);
}

Здесь ошибка в том, что index и end в цикле не меняются, поэтому цикл выполняется бесконечно, конечно, пока не упадет приложение.

for (int index = begin; index <= end; ++index)
{
    vector.erase(vector.begin() + index);
}

В этом коде ошибка состоит в том, что индекс меняется на единицу, а поэтому удаление элементов проходит через один, ведь после удаления все элементы сдвинулись, а мы это не учитываем.

Конечно же, лучше использовать версию erase для удаления диапазона:

vector.erase(vector.begin() + begin, vector.begin() + (end + 1));

Но раз нужно удалять диапазон по одному элементу, и использовать индексы, то можно сделать так:

 for (int index = begin; index <= end; ++index)
 {
     //После удаления элементы сдвинуться,
     //и новый удаляемый элемент будет на той же позиции,
     //поэтому добавляем begin, а не index
     vector.erase(vector.begin() + begin);     
 }
READ ALSO
Не могу реализовать функцию

Не могу реализовать функцию

Я создаю такую функцию

188
почему метод не принимает JSON?

почему метод не принимает JSON?

Отправляю POST запрос в метод

195
AsyncTask return null при повторном запросе

AsyncTask return null при повторном запросе

есть задача загрузить загрузить данные с api, обработать и передать список в mainActivityПервый раз когда загружаю данные все работает отлично - при...

193
Чат client-server на java

Чат client-server на java

У меня есть простенький чат написанный на javaСервер для него я запустил на линуксе, а клиент подключается с компьютера на windows

213