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

stl::list erase() - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ показывает ошибку в `pow`, почему?и как это исправить? http://www.cyberforum.ru/cpp-beginners/thread818909.html
#include <iostream> #include <math.h> using namespace std; class myClass { double a; public: double b; void Get(double, double);
C++ Проблемма с заполнением динамического двумерного массива По заданию,нужно: -объявить двумерный динамический массив -спросить и пользователя размеры массива -выделить память -заполнить массив случайными числами Имееться структура,объявления двумерного динамического массива вида: struct Din_Array { http://www.cyberforum.ru/cpp-beginners/thread818899.html
C++ портфель задач
Здравствуйте.помогите пожалуйста. Генерация всех простых чисел, меньших n, с помощью портфеля задач. В портфеле будут содержаться все нечётные числа (физически они все не хранятся, поскольку из предыдущего числа можно получить следующее). Каждый кандидат проверяется на простоту и добавляется в список известных простых чисел, который используется для проверки следующих кандидатов. Доступ к списку...
Нужно составить программы C++
1. Язык С++ 2. Помогите к понедельнику надо сдать, а язык вообще не понимаю И еще операторы ввода и вывода по возможности pintf и scanf Первое задание С использованием инструкций if, if-else. Второе задание работы инструкции switсh, switсh-default, разработка программ с использованием оператора выбора.
C++ Считывание из файла в char - при выводе выводится лишнее http://www.cyberforum.ru/cpp-beginners/thread818830.html
Считываю из файла в строку типа char, если у меня в строке меньше 16 символов, то при выводе выводится какой-то мусор, наверное связано с неправильным выделением памяти, пробовал выделять ее различными способами и через malloc и через new char - такая ошибка остается если вывожу text в цикле (text i++) то выводятся знаки = вместо символов, вообщем совсем меня запутали эти char - если не сложно...
C++ Массивы. Найти сумму положительных элементов, расположенных в четных столбцах Найти сумму положительных элементов, расположенных в четных столбцах. (Матрица, или массив) подробнее

Показать сообщение отдельно
vxg
Модератор
 Аватар для vxg
2669 / 1680 / 158
Регистрация: 13.01.2012
Сообщений: 6,283
26.03.2013, 13:23     stl::list erase()
никогда не вызывайте функции меняющие список во время перебора.
удалить элементы можно так
C++
1
ls.remove(1); //удалим все единицы
если элементы списка не так просты, то придется перебирать
C++
1
2
3
4
5
6
for (std::list<int>::iterator i = ls.begin(); i != ls.end(); i++)
    if (*i == 3)
    {
        ls.erase(i);
        break; //мы удалили тройку - прерываем перебор иначе мы можем попасть на исключение доступа
    }
а вот так можно перебирать если нужно удалять несколько элементов
C++
1
2
3
4
5
    for (std::list<int>::iterator i = ls.begin(); i != ls.end();)
    {
        if (*i == 3) i = ls.erase(i);
        else i++;
    }
следует иметь ввиду что если ваши элементы зависят друг от друга и вызов деструктора элемента может повлечь за собой доступ к другим элементам удалить элемент будет не так просто
 
Текущее время: 12:23. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru