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

Список - C++

Восстановить пароль Регистрация
 
 
Казаков Игорь
0 / 0 / 0
Регистрация: 01.03.2013
Сообщений: 34
21.07.2013, 10:54     Список #1
написал функцию, которая удаляет звено списка, если выполняется условие( если параметр функции == полю звена), однако вылетает ошибка list iterator not incrementable, когда удаляется последнее звено
C++
1
2
3
4
5
6
7
8
void CarPark::GoOutCarPark(int number)
{
    for (auto it = machine.begin(); it != machine.end(); it++)
    {
        if (number == it->GetNumber())
            it = machine.erase(it);
    }   
}
machine(список)
GetNumber- возвращает нужное поле
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.07.2013, 10:54     Список
Посмотрите здесь:

Список: связный список, в котором информация о книгах сортируется по убыванию стоимости. C++
C++ 3 класса: список, стек(как список), очередь(как список)
list. Cоздать список из результатов(с массивами), а потом просмотреть весь список C++
C++ создать список л3 из элементов входящих и в список л1 и в список л2
C++ Необходимо создать список, элемент которого может быть список
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
21.07.2013, 12:26     Список #21
Мой код в 5 посте неверный, там нужно добавить:
C++
1
2
3
4
5
6
7
8
9
10
11
void CarPark::GoOutCarPark(int number)
{
    for (auto it = machine.begin(); it != machine.end(); it++)
    {
        if (number == it->GetNumber())
       {
            it = machine.erase(it);
            if (it != machine.begin()) --it;
       }
    }   
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kuzia domovenok
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
21.07.2013, 12:27     Список #22
lazybiz, error C4430: missing type specifier - int assumed. Note: C++ does not support default-int

Так что туфта по твоей ссылке!
castaway
Эксперт С++
4842 / 2981 / 367
Регистрация: 10.11.2010
Сообщений: 11,013
Записей в блоге: 10
Завершенные тесты: 1
21.07.2013, 12:28     Список #23
Включи у себя стандарт С++11, туфта...
Kuzia domovenok
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
21.07.2013, 12:29     Список #24
Цитата Сообщение от lazybiz Посмотреть сообщение
Включи у себя стандарт С++11, туфта...
а) как?
б) зачем?
в) если забить на типы, С++ превратится в сраный Бейсик
г) использовать одно ключевое слово auto для двух абсолютно разных целей... ну и бред! Давайте слово while будет обозначать ещё и какой-нибудь новый спецификатор из нового стандарта.
castaway
Эксперт С++
4842 / 2981 / 367
Регистрация: 10.11.2010
Сообщений: 11,013
Записей в блоге: 10
Завершенные тесты: 1
21.07.2013, 12:32     Список #25
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
а) как?
б) зачем?
Если не знаешь как и зачем, тогда зачем вообще залез в эту тему?
Цитата Сообщение от lazybiz Посмотреть сообщение
ТС использует именно стандарт С++11.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
21.07.2013, 12:34     Список #26
Сейчас на таком коде проверил:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include <iostream>
#include <cstdlib>
#include <algorithm>
#include <list>
using namespace std;
 
void f(list <int>& lst, int number)
{
    for (auto it = lst.begin(); it != lst.end(); it++)
    {
        if (*it == 5)
        {
            it = lst.erase(it);
            if (it != lst.begin()) --it; // если закоментировать, то будет ошибка
        }
    }   
}
 
int main()
{
    int arr[5] = {5, 3, 5, 3, 5};
    list<int> lst(arr, arr + 5);
    
    f(lst, 5);
 
    for (auto it = lst.begin(); it != lst.end(); it++)
    {
        cout << *it << ' ';
    }
    
    return 0;
}
Kuzia domovenok
21.07.2013, 12:39
  #27

Не по теме:

Цитата Сообщение от lazybiz Посмотреть сообщение
Если не знаешь как и зачем, тогда зачем вообще залез в эту тему?
да тут, я смотрю, сплошные тролли в теме! Один я что ли серьёзно обсуждаю вопрос?

castaway
21.07.2013, 12:44
  #28

Не по теме:

Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
Один я что ли серьёзно обсуждаю вопрос?
серьезно обсуждает)))) Два года назад новый стандарт вышел, иди, почитай)))

Kuzia domovenok
21.07.2013, 12:46
  #29

Не по теме:

Цитата Сообщение от lazybiz Посмотреть сообщение
серьезно обсуждает)))) Два года назад новый стандарт вышел, иди, почитай)))
ещё бы мне и компилятор этого стандарта дали... А то сижу под MSVS2008 и проблем не знаю. Всё таки в Microsoft - гении!

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.07.2013, 15:21     Список
Еще ссылки по теме:

Создать список, после каждого отрицательного числа вставить в список 0 C++
Сформировать список из 10 работников, используя динамическую структуру данных двусвязный список C++
C++ Сформировать список из 10 книг, используя динамическую структуру данных односвязный список

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Казаков Игорь
0 / 0 / 0
Регистрация: 01.03.2013
Сообщений: 34
21.07.2013, 15:21  [ТС]     Список #30
мне кажется, что ошибка здесь, потому что при трассировке, прога падает именно здесь.
Yandex
Объявления
21.07.2013, 15:21     Список
Ответ Создать тему
Опции темы

Текущее время: 13:45. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru