Форум программистов, компьютерный форум, киберфорум
Наши страницы

Удаление элемента вектора в цикле. - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Задача 1567. SMS-спам и проблема двух решений http://www.cyberforum.ru/cpp-beginners/thread359187.html
Собственно задача: http://acm.timus.ru/problem.aspx?space=1&num=1567 Проблема в том, что моё решение со switch'ем даёт правильные результаты, в том числе правильно считает пример, но он-лайн...
C++ Работа с файлами, Алгоритм не могу продумать. 1. Дан текстовый файл, фразы в котором отделены друг от друга точками, а слова – пробелами и знаками препинания. Расставить фразы в этом файле в порядке увеличения количества слов в каждой из них. ... http://www.cyberforum.ru/cpp-beginners/thread359185.html
C++ Интересное поведение cin.getline();
Доброго времени суток! Я не устаю терроризировать форум своими тупыми вопросами, но для этого он и создан. На этот раз у меня проблема с методом getline(); Имеется код: switch(menuNumber){ case...
Проблема с очисткой памяти C++
Здравствуйте! Помогите пожалуйста исправить проблему с очисткой памяти в void memfree(). Заранее спасибо. #include "stdafx.h" #include <windows.h> #include "resource.h" #include <string> #define...
C++ дайте наводку, программисты и математики, как делать задачу подобного типа http://www.cyberforum.ru/cpp-beginners/thread359171.html
Условие задачи: Найти максимальное значение, которое может быть представлено при использовании типа unsigned char :pardon: P.S.: Нужно написать соответствующую программу
C++ Трабла с прогой "дан радиус окружности. Найти длину окружности и площадь круга" как вычислить подобную задачу на С. Жду ответа. С уважением. подробнее

Показать сообщение отдельно
ZaxarPal
1 / 1 / 0
Регистрация: 18.01.2011
Сообщений: 83

Удаление элемента вектора в цикле. - C++

02.10.2011, 00:40. Просмотров 4436. Ответов 8
Метки (Все метки)

Как правильно удалить элемент вектора в цикле? remove_if не подходит.
Примерно вот такая структура программы:
Код
struct Ex
{
    char value;
    uint32 timer;
};

std::vector<Ex> List;

void Update(uint32 diff)
{
    for (std::vector<Ex>::iterator itr = List.begin(); itr != List.end(); ++itr)
    {
        if ((*itr).timer <= diff)
        {
            <выполнить операцию над (*itr).value>
            <удалить элемент>
        }
        else
            (*itr).timer -= diff;
    }
}
Вектор заполняется элементами. Функция Update вызывается каждые 100 миллисекунд. timer = 10000. Т.е. после добавления элемента в вектор по истечению 10 секунд нужно выполнить над ним операцию и удалить. Удалять пробовал с помощью List.erase(itr) но ловил краш. Попробовал сделать
Код
List.erase(itr);
--itr;
стало работать через раз. Почитал подробнее про вектор, понял что так делать нельзя. Но не понял как правильно решить проблему удаления элемента. Сохранять порядок элементов вектора не нужно.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.