0 / 0 / 0
Регистрация: 20.01.2019
Сообщений: 12
|
|||||||||||
1 | |||||||||||
Проблема с STL контейнером list20.01.2019, 13:33. Показов 1381. Ответов 8
Добрый день, столкнулся с проблемой при решении учебной задачи.
Задача: "Используя приведенное ниже описание массива ia, скопируйте его содержимое в вектор и в список. Используя версию функции erase() для одного итератора, удалите из списка элементы с нечетными значениями, а из вектора - с четными. int ia[] = {0,1,1,2,3,5,8,13,21,55,89};
Обработка и вывод результата вектора проходит так же успешно. Но когда дело доходит до обработки списка то появляется ошибка:
Компилировал с помощью gcc version 7.3.0 (Ubuntu 7.3.0-27ubuntu1~18.04).
0
|
20.01.2019, 13:33 | |
Ответы с готовыми решениями:
8
Работа с контейнером библиотеки STL Создание обертки над контейнером stl Работа с STL list + пропись List.h STL list |
447 / 333 / 172
Регистрация: 01.07.2015
Сообщений: 1,162
|
|
20.01.2019, 20:32 | 2 |
0
|
495 / 209 / 70
Регистрация: 27.05.2016
Сообщений: 557
|
||||||
20.01.2019, 20:34 | 3 | |||||
Сообщение было отмечено kavars как решение
Решение
1
|
610 / 415 / 151
Регистрация: 11.01.2019
Сообщений: 1,746
|
|
20.01.2019, 20:37 | 4 |
Ну кто ж так делает??? Рубить ветку, на которой сидишь )))
erase делает итератор на удаленный элемент не валидным и ++ к нему уже нельзя применять!
1
|
notAll
|
20.01.2019, 20:42
#5
|
Не по теме: Народ, подскажите, по какой такой причине
0
|
610 / 415 / 151
Регистрация: 11.01.2019
Сообщений: 1,746
|
|
20.01.2019, 20:45 | 6 |
not_fn is intended to replace the C++03-era negators std::not1 and std::not2.
Вместо них появилась not_fn.
1
|
0 / 0 / 0
Регистрация: 20.01.2019
Сообщений: 12
|
|
20.01.2019, 22:52 [ТС] | 7 |
jugu, Но в случае с вектором работает всё верно, почему проблема проявляется именно с list?
0
|
610 / 415 / 151
Регистрация: 11.01.2019
Сообщений: 1,746
|
|
20.01.2019, 22:56 | 8 |
Потому что у вектора элементы идут сплошняком и положение следующего элемента известно (он соседний в памяти). А элементы списка могут быть разбросаны по памяти как угодно. Поэтому потеря итератора на удаленный элемент приводит к потере возможности найти следующий элемент списка.
1
|
0 / 0 / 0
Регистрация: 20.01.2019
Сообщений: 12
|
|
21.01.2019, 09:17 [ТС] | 9 |
jugu, Спасибо большое за объяснение!
0
|
21.01.2019, 09:17 | |
21.01.2019, 09:17 | |
Помогаю со студенческими работами здесь
9
List STL STL list STL List Работа с STL list STL vector,list Реализация list из STL Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |