Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
Казаков Игорь
0 / 0 / 0
Регистрация: 01.03.2013
Сообщений: 34
1

Список

21.07.2013, 10:54. Просмотров 823. Ответов 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- возвращает нужное поле
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.07.2013, 10:54
Ответы с готовыми решениями:

Создать список L3 из элементов, входящих и в список L1 и в список L2
создать список л3 из элементов входящих и в список л1 и в список л2

3 класса: список, стек(как список), очередь(как список)
препод дал задание: написать 3 класса (список, стек, очередь), методы: вывод,...

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

Вводится число N. Создать список его делителей и вывести список на экран
#include<iostream> #include<stdio.h> #include<malloc.h> #include<string.h>...

list. Cоздать список из результатов(с массивами), а потом просмотреть весь список
Подскажите пожалуйста как мне создать список из моих результатов(с массивами)...

29
alsav22
5442 / 4837 / 831
Регистрация: 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;
       }
    }   
}
1
Kuzia domovenok
2352 / 2088 / 494
Регистрация: 25.03.2012
Сообщений: 7,459
Записей в блоге: 1
21.07.2013, 12:27 22
lazybiz, error C4430: missing type specifier - int assumed. Note: C++ does not support default-int

Так что туфта по твоей ссылке!
0
castaway
Эксперт С++
4930 / 3037 / 453
Регистрация: 10.11.2010
Сообщений: 11,116
Записей в блоге: 10
Завершенные тесты: 1
21.07.2013, 12:28 23
Включи у себя стандарт С++11, туфта...
0
Kuzia domovenok
2352 / 2088 / 494
Регистрация: 25.03.2012
Сообщений: 7,459
Записей в блоге: 1
21.07.2013, 12:29 24
Цитата Сообщение от lazybiz Посмотреть сообщение
Включи у себя стандарт С++11, туфта...
а) как?
б) зачем?
в) если забить на типы, С++ превратится в сраный Бейсик
г) использовать одно ключевое слово auto для двух абсолютно разных целей... ну и бред! Давайте слово while будет обозначать ещё и какой-нибудь новый спецификатор из нового стандарта.
0
castaway
Эксперт С++
4930 / 3037 / 453
Регистрация: 10.11.2010
Сообщений: 11,116
Записей в блоге: 10
Завершенные тесты: 1
21.07.2013, 12:32 25
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
а) как?
б) зачем?
Если не знаешь как и зачем, тогда зачем вообще залез в эту тему?
Цитата Сообщение от lazybiz Посмотреть сообщение
ТС использует именно стандарт С++11.
0
alsav22
5442 / 4837 / 831
Регистрация: 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;
}
0
Kuzia domovenok
21.07.2013, 12:39
  #27

Не по теме:

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

0
castaway
21.07.2013, 12:44
  #28

Не по теме:

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

0
Kuzia domovenok
21.07.2013, 12:46
  #29

Не по теме:

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

0
Казаков Игорь
0 / 0 / 0
Регистрация: 01.03.2013
Сообщений: 34
21.07.2013, 15:21  [ТС] 30
мне кажется, что ошибка здесь, потому что при трассировке, прога падает именно здесь.
0
21.07.2013, 15:21
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.07.2013, 15:21

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

Список: связный список, в котором информация о книгах сортируется по убыванию стоимости.
Друзья помогите с реализацией списка. Нужно запрограммировать связный список, в...

Двусвязный список (в конец двусвязного списка добавить другой список)
здравствуйте, подскажите пожалуйста, как в конец двусвязного списка добавить...


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

Или воспользуйтесь поиском по форуму:
30
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru