![]() |
1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!
![]() |
Fanat |
![]()
Сообщение
#1
|
![]() Fanat ![]() ![]() ![]() Группа: Пользователи Сообщений: 261 Пол: Мужской Реальное имя: Сергей Репутация: ![]() ![]() ![]() |
Список содержит указатели на элементы.
Необходимо удалить i-ый элемент списка, при этом удалить и сам элемент. Я делаю так
Всё работает если Index = 0, или если нет строки delete *it. А если удалить элемент с индексом больше 0 (меньше размера списка), то при следующем проходе по списку вылетает ошибка по доступу к памяти...как правильно сделать?.. |
![]() ![]() |
Michael_Rybak |
![]()
Сообщение
#2
|
Michael_Rybak ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 1 046 Пол: Мужской Реальное имя: Michael_Rybak Репутация: ![]() ![]() ![]() |
Цитата Если список - это std::list, то достаточно одного erase(it)... delete здесь ни при чем совершенно. volvo, там не объекты, а указатели, Fanat хочет и объект удалить, и указатель на него. Fanat, попробуй заменить it += index циклом. т.е. пробегай по списку вручную до нужного элемента. Сообщение отредактировано: Michael_Rybak - 23.01.2008 13:52 |
Fanat |
![]()
Сообщение
#3
|
![]() Fanat ![]() ![]() ![]() Группа: Пользователи Сообщений: 261 Пол: Мужской Реальное имя: Сергей Репутация: ![]() ![]() ![]() |
Fanat, попробуй заменить it += index циклом. т.е. пробегай по списку вручную до нужного элемента. Так на самом деле работает...но был перегружен оператор + таким же самым образом... Тут... Ну и пишу я соответственно не += ,а в нужном месте (it + Index). |
![]() ![]() |
![]() |
Текстовая версия | 20.07.2025 19:41 |