Форум программистов, компьютерный форум CyberForum.ru

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Задача 1567. SMS-спам и проблема двух решений http://www.cyberforum.ru/cpp-beginners/thread359187.html
Собственно задача: http://acm.timus.ru/problem.aspx?space=1&num=1567 Проблема в том, что моё решение со switch'ем даёт правильные результаты, в том числе правильно считает пример, но он-лайн проверку не проходит. Есть аналогичное решение, через if'ы, и оно проходит проверку. Вопрос - в чём разница? где моя версия неправильно считает?( P.S. Альтернативный вариант решения мне известен, но...
C++ Работа с файлами, Алгоритм не могу продумать. 1. Дан текстовый файл, фразы в котором отделены друг от друга точками, а слова – пробелами и знаками препинания. Расставить фразы в этом файле в порядке увеличения количества слов в каждой из них. 2. Компоненты типизированного файла – массивы, состоящие из 6 вещественных чисел. Вывести на экран тот из них, сумма отрицательных элементов которого больше. Компоненты типизированного файла – целые... http://www.cyberforum.ru/cpp-beginners/thread359185.html
C++ Интересное поведение cin.getline();
Доброго времени суток! Я не устаю терроризировать форум своими тупыми вопросами, но для этого он и создан. На этот раз у меня проблема с методом getline(); Имеется код: switch(menuNumber){ case 1: cout << "Input name of the first player: "; cin.getline(namePlayer, sizeof(namePlayer)); ttt.changePlayerName(namePlayer, 0); cout << "Input name of the second player: ";
Проблема с очисткой памяти C++
Здравствуйте! Помогите пожалуйста исправить проблему с очисткой памяти в void memfree(). Заранее спасибо. #include "stdafx.h" #include <windows.h> #include "resource.h" #include <string> #define MAXPOINTS 1000 int ko,key1=0; int kolreb;
C++ дайте наводку, программисты и математики, как делать задачу подобного типа http://www.cyberforum.ru/cpp-beginners/thread359171.html
Условие задачи: Найти максимальное значение, которое может быть представлено при использовании типа unsigned char :pardon: P.S.: Нужно написать соответствующую программу
C++ WinAPI Невозможно разрешить идентификатор... Не понимаю в чем проблема. Начал изучать WinAPI, ну вообщем по учебе. И решил скомпилисть пример из книжки, попробовать. Написал как там, но выдает ошибки(пишу в NetBeans): Невозможно разрешить идентификатор DWORD Невозможно разрешить идентификатор GetLogicalDriveStringsA Невозможно разрешить идентификатор nBufferLength ... код:#include <cstdlib> #include <iostream> #include <winbase.h> подробнее

Показать сообщение отдельно
ZaxarPal
1 / 1 / 0
Регистрация: 18.01.2011
Сообщений: 83
02.10.2011, 00:40     Удаление элемента вектора в цикле.
Как правильно удалить элемент вектора в цикле? 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;
стало работать через раз. Почитал подробнее про вектор, понял что так делать нельзя. Но не понял как правильно решить проблему удаления элемента. Сохранять порядок элементов вектора не нужно.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 20:38. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru