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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Казаков Игорь
0 / 0 / 0
Регистрация: 01.03.2013
Сообщений: 34
#1

Список - C++

21.07.2013, 10:54. Просмотров 721. Ответов 29
Метки нет (Все метки)

написал функцию, которая удаляет звено списка, если выполняется условие( если параметр функции == полю звена), однако вылетает ошибка 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++ std::sort. Как сортировать список? (список указателей на объект)
Упорядочить список студентов по среднему баллу и вывести весь список C++
Список: связный список, в котором информация о книгах сортируется по убыванию стоимости. C++
C++ Список: Как добавлять элемент в список, не в начало и не в конец, а между 1 и 2 элементами списка?
C++ 3 класса: список, стек(как список), очередь(как список)
list. Cоздать список из результатов(с массивами), а потом просмотреть весь список C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5410 / 4806 / 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
1886 / 1741 / 117
Регистрация: 25.03.2012
Сообщений: 5,916
Записей в блоге: 1
21.07.2013, 12:27     Список #22
lazybiz, error C4430: missing type specifier - int assumed. Note: C++ does not support default-int

Так что туфта по твоей ссылке!
castaway
Эксперт С++
4869 / 3008 / 370
Регистрация: 10.11.2010
Сообщений: 11,059
Записей в блоге: 10
Завершенные тесты: 1
21.07.2013, 12:28     Список #23
Включи у себя стандарт С++11, туфта...
Kuzia domovenok
 Аватар для Kuzia domovenok
1886 / 1741 / 117
Регистрация: 25.03.2012
Сообщений: 5,916
Записей в блоге: 1
21.07.2013, 12:29     Список #24
Цитата Сообщение от lazybiz Посмотреть сообщение
Включи у себя стандарт С++11, туфта...
а) как?
б) зачем?
в) если забить на типы, С++ превратится в сраный Бейсик
г) использовать одно ключевое слово auto для двух абсолютно разных целей... ну и бред! Давайте слово while будет обозначать ещё и какой-нибудь новый спецификатор из нового стандарта.
castaway
Эксперт С++
4869 / 3008 / 370
Регистрация: 10.11.2010
Сообщений: 11,059
Записей в блоге: 10
Завершенные тесты: 1
21.07.2013, 12:32     Список #25
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
а) как?
б) зачем?
Если не знаешь как и зачем, тогда зачем вообще залез в эту тему?
Цитата Сообщение от lazybiz Посмотреть сообщение
ТС использует именно стандарт С++11.
alsav22
5410 / 4806 / 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     Список
Еще ссылки по теме:

C++ Создать список L3 из элементов, входящих и в список L1 и в список L2
C++ Необходимо создать список, элемент которого может быть список
Создать список, после каждого отрицательного числа вставить в список 0 C++
Напечатать пронумерованный список список первых 10 наиболее популярных газет C++
C++ Вводится число N. Создать список его делителей и вывести список на экран

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

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

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