Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.12.2010, 20:48   #1
Kn793
Форумчанин
 
Регистрация: 20.06.2008
Сообщений: 125
По умолчанию Можно ли удалить элемент, зная лишь итератор?

Можно написать list.erace(iterator);
Но ведь итератор является своего рода указателем на элемент. И информация о list тут избыточна.
Kn793 вне форума Ответить с цитированием
Старый 09.12.2010, 22:51   #2
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

Цитата:
Сообщение от Kn793 Посмотреть сообщение
Можно написать list.erace(iterator);
Но ведь итератор является своего рода указателем на элемент. И информация о list тут избыточна.
Я бы так не сказал. list - это связный список, из чего следует, что каждый его элемент содержит указатель на следующий. Если мы просто освободим память по указателю, а элемент при этом будет находится посреди списка, то при последующем итерировании по списку мы получим AV да и вообще потеряем кусок списка за удалённым элементом. При удалении элемента из списка, необходимо изменить сам список(предыдущий элемент должен указывать на следующий за удаляемым, изменить размер списка и т.д.), так что эта информация никак не лишняя.
netrino вне форума Ответить с цитированием
Старый 10.12.2010, 13:45   #3
Kn793
Форумчанин
 
Регистрация: 20.06.2008
Сообщений: 125
По умолчанию

Цитата:
предыдущий элемент должен указывать на следующий за удаляемым
Да, должен, а следующий на предыдущий (список двусвязанный). Но ведь это не проблема.
Код:
(p->left).right = p->right; (p->right).left = p->left; delete p;
Цитата:
изменить размер
Вот тут уже согласен, без указателя на список не обойтись. Спасибо .
Kn793 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
удалить элемент из массива dron-k Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 17.09.2010 17:46
Можно ли, зная ID контрола, заполучить его хэндл? TwiX Общие вопросы Delphi 10 04.08.2009 00:01
добавить/удалить элемент Revenholm Общие вопросы C/C++ 3 13.06.2009 17:17
Удалить элемент массива pavel42 Помощь студентам 14 21.05.2009 08:52
GPRS. Можно ли установить связь, не зная IP? Suter Работа с сетью в Delphi 5 28.02.2009 06:46