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

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

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

Список - C++

21.07.2013, 10:54. Просмотров 754. Ответов 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
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Список (C++):

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

3 класса: список, стек(как список), очередь(как список) - C++
препод дал задание: написать 3 класса (список, стек, очередь), методы: вывод, добавление, удаление. Использовать при обращении указатель...

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

Вводится число N. Создать список его делителей и вывести список на экран - C++
#include<iostream> #include<stdio.h> #include<malloc.h> #include<string.h> #include<stdlib.h> using namespace std; struct...

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

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
castaway
Эксперт С++
4884 / 3020 / 370
Регистрация: 10.11.2010
Сообщений: 11,078
Записей в блоге: 10
Завершенные тесты: 1
21.07.2013, 12:06 #16
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
Таки спецификатор класса памяти это.
А ты понимаешь что это значит?
0
Kuzia domovenok
1891 / 1746 / 118
Регистрация: 25.03.2012
Сообщений: 5,925
Записей в блоге: 1
21.07.2013, 12:12 #17
Цитата Сообщение от lazybiz Посмотреть сообщение
А ты понимаешь что это значит?
несомненно.
а) как минимум не сработает такое
C
1
2
auto i=0;//не работает
auto int j=0;//работает
Ну и этот спецификатор действительно редко используется, т.к. при объявлении локальных переменных эти записи всё равно эквивалентны.
C
1
2
3
4
void foo(){
int i;
auto int i;//можно и так объявить
}
0
castaway
Эксперт С++
4884 / 3020 / 370
Регистрация: 10.11.2010
Сообщений: 11,078
Записей в блоге: 10
Завершенные тесты: 1
21.07.2013, 12:13 #18
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
auto i=0;//не работает
Да неужели?
0
Kuzia domovenok
1891 / 1746 / 118
Регистрация: 25.03.2012
Сообщений: 5,925
Записей в блоге: 1
21.07.2013, 12:16 #19
Цитата Сообщение от lazybiz Посмотреть сообщение
А ты понимаешь что это значит?
а ты понимаешь, что значит "класс памяти"?
Есть два класса памяти: статический и автоматический. Автоматические объекты локальны и исчезают после выхода из блока.
Статические - нет.
Например, можно использовать статическую переменную для подсчёта количества вызовов фунуции.
C
1
2
3
4
5
6
7
void foo(){
static int cnt=0;
auto int tmp=0;//tmp всегда будет сбрасываться в 0
cnt++;
tmp++;
printf("cnt=%d tmp=%d", cnt, tmp);
}
0
castaway
Эксперт С++
4884 / 3020 / 370
Регистрация: 10.11.2010
Сообщений: 11,078
Записей в блоге: 10
Завершенные тесты: 1
21.07.2013, 12:26 #20
Открою для тебя один секрет, начиная со стандарта С++11 auto не имеет семантику спецификатора класса памяти, а является просто ключевым словом.
Почитай на досуге: http://en.cppreference.com/w/cpp/language/auto

Добавлено через 3 минуты
Заодно обращаю твоё внимание на то, что судя по теме, ТС использует именно стандарт С++11.
0
alsav22
5419 / 4815 / 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;
       }
    }   
}
1
Kuzia domovenok
1891 / 1746 / 118
Регистрация: 25.03.2012
Сообщений: 5,925
Записей в блоге: 1
21.07.2013, 12:27 #22
lazybiz, error C4430: missing type specifier - int assumed. Note: C++ does not support default-int

Так что туфта по твоей ссылке!
0
castaway
Эксперт С++
4884 / 3020 / 370
Регистрация: 10.11.2010
Сообщений: 11,078
Записей в блоге: 10
Завершенные тесты: 1
21.07.2013, 12:28 #23
Включи у себя стандарт С++11, туфта...
0
Kuzia domovenok
1891 / 1746 / 118
Регистрация: 25.03.2012
Сообщений: 5,925
Записей в блоге: 1
21.07.2013, 12:29 #24
Цитата Сообщение от lazybiz Посмотреть сообщение
Включи у себя стандарт С++11, туфта...
а) как?
б) зачем?
в) если забить на типы, С++ превратится в сраный Бейсик
г) использовать одно ключевое слово auto для двух абсолютно разных целей... ну и бред! Давайте слово while будет обозначать ещё и какой-нибудь новый спецификатор из нового стандарта.
0
castaway
Эксперт С++
4884 / 3020 / 370
Регистрация: 10.11.2010
Сообщений: 11,078
Записей в блоге: 10
Завершенные тесты: 1
21.07.2013, 12:32 #25
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
а) как?
б) зачем?
Если не знаешь как и зачем, тогда зачем вообще залез в эту тему?
Цитата Сообщение от lazybiz Посмотреть сообщение
ТС использует именно стандарт С++11.
0
alsav22
5419 / 4815 / 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;
}
0
Kuzia domovenok
21.07.2013, 12:39
  #27

Не по теме:

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

0
castaway
21.07.2013, 12:44
  #28

Не по теме:

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

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
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.07.2013, 15:21
Привет! Вот еще темы с ответами:

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

Необходимо создать список, элемент которого может быть список - C++
Всем доброго времени суток! Стоит следующая задача: необходимо создать список, элемент которого может быть список (да да, звучит...

Описать функцию, которая будет проверять входит ли список l1 в список l2 - C++
Здравствуйте, нужно Описать функцию, которая будет проверять входит ли список l1 в список l2. Ни как не могу понять как это сделать. ...

Упорядочить список студентов по среднему баллу и вывести весь список - C++
форумчане,выдает ошибку :( столько маюсь с задачей уже #include &lt;vcl.h&gt; #include &lt;stdio.h&gt; #pragma hdrstop /*Упорядочить список...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
21.07.2013, 15:21
Ответ Создать тему
Опции темы

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