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

c++ stl удаление елемента из list - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ пожалуйста очень срочно нужна программа форматной печати файла.... http://www.cyberforum.ru/cpp-beginners/thread310252.html
Текст задания: Разработать программу форматной печати файла на странице. Число строк и размер строки задаётся пользователем. Помоги пожалуйста нужно до 3.06.2011 Зарание Спасибо
C++ VC++ 2010 Express и MFC Application Подскажите, в VC++ 2010 есть возможно установить шаблоны приложений MFC Application? В стандартной установке не было шаблонов MFC Application, хотел до установить через Интернет но ни чего не нашел. http://www.cyberforum.ru/cpp-beginners/thread310248.html
C++ скорость жёсткого диска
Господа програмисты,собираюсь сделать программу,смысл вот в чём-измерить скорость жёсткого диска(как бы тест винта). Вопрос вот такой-если я задам копировать определённый файл скажем с диска "с" на диск "D",и засеку время за которое оно скопируется,будет ли это время являться сугубо временем работы жёсткого диска,или будет зависить ещё от чего то(ну например оперативная память),если будет ,то...
Курсовая:Восстановление многоугольника C++
На клетчатом листке бумаги нарисован многоугольник,все стороны которого проходят по линиям клеток. В каждой клетке написано число сторон данной клетки которые принадлежат сторонам многоугольника. Восстановить многоугольник имея эти числа.
C++ Работа с шаблоном функции http://www.cyberforum.ru/cpp-beginners/thread310225.html
Ребята нужно переделать в данный код,в шаблон функции,все необходимые данные для функций должны передаваться им в качестве параметров,использование глобальных переменных в функциях не допускается... #include "stdafx.h" #include <conio.h> #include <iostream> using namespace std;
C++ Ход шахматного коня Добрый день. Подскажите пожалуйсто с задачей:Указать самый короткий путь коня, начинающийся на одном заданном поле шахматной доски и заканчивающийся на другом. Никакое поле не должно встречаться в маршруте дважды. Я думаю это делать можно через рекурсию. Помечать все пройденые поля. А в коде поставить условия: если верхняя клетка не помечена и возможен ход в нее, то идем, иначе также проверяем... подробнее

Показать сообщение отдельно
grizlik78
Эксперт C++
 Аватар для grizlik78
1882 / 1414 / 101
Регистрация: 29.05.2011
Сообщений: 2,958
01.06.2011, 18:22     c++ stl удаление елемента из list
Цитата Сообщение от ValeryLaptev Посмотреть сообщение
При удалении элемента списка все итераторы становятся НЕДЕЙСТВИТЕЛЬНЫМИ (типа не инициализированными).
Как раз для списка это не верно. Все итераторы, ссылающиеся на не удалённые элементы остаются действительными
Цитата Сообщение от ValeryLaptev Посмотреть сообщение
И кстати, при этом уменьшается размер списка - см. ограничение цикла...
Ну, ограничение там не по размеру же.
На самом деле код некорректный для случая, когда удаляется последний элемент списка. Итератор здесь увеличивается дважды: один раз при удалении, второй в конце итерации и при этом получается итератор, указывающий за end()
Вот так должно работать:
C++
1
2
3
4
5
6
7
8
for(std::list<gun>::iterator iter = Gun.begin(); iter != Gun.end(); )
{
    iter->controle();
    if(iter->getlife() == 0)
        Gun.erase(iter++);
    else
        iter++;
}
 
Текущее время: 13:43. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru