|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу. Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста". Название темы слишком короткое или не отражает сути вашего вопроса. Тема исчерпала себя, помните, один вопрос - одна тема Прочитайте правила и заново правильно создайте тему. |
|
Опции темы | Поиск в этой теме |
01.03.2016, 17:04 | #11 | |
Заблокирован
Регистрация: 06.02.2011
Сообщений: 1,999
|
Цитата:
в векторе да - - - но тут действителен и указывает уже на элементы другого контейнера. может оно и верно. поэтому и пришлось вводить дополнительный итератор, чтобы иметь возможность вновь идти по контейнеру temp Код:
|
|
01.03.2016, 17:07 | #12 |
Форумчанин
Регистрация: 22.02.2016
Сообщений: 145
|
Это актуально только для контейнеров типа списка и если элемент на который указывает итератор сохраняется. Если из контейнера элемент удаляется, то итератор не может оставаться действительным, хотя значение как ссылки не изменится.
Вы что, хотите отрезать кусок, но сохранить действительность ссылок?
Возьму в кредит мильён по 100% годовых на сто лет.
|
01.03.2016, 17:15 | #13 |
Заблокирован
Регистрация: 06.02.2011
Сообщений: 1,999
|
|
01.03.2016, 17:15 | #14 |
Форумчанин
Регистрация: 22.02.2016
Сообщений: 145
|
Не стоит на это рассчитывать. Для итераторов, как для ссылок, можно применять вычитание. Вопрос на засыпку, что будет если вычесть итератор из итератора другого контейнера (в смысле экземпляр а не тип)?
Попробуйте сделать список 1 2 3 4 и два итератора на 2 и 3. Вычтите из одного другой. Потом разрежьте список на 1 2 и 3 4, и снова выполните вычитание.
Возьму в кредит мильён по 100% годовых на сто лет.
|
01.03.2016, 17:17 | #15 | ||||
Вредный кошак
Участник клуба
Регистрация: 14.10.2012
Сообщений: 1,159
|
Цитата:
о std::list и его функции-члене splice. То бишь оба условия выполняются. Цитата:
В данном случае у нас splice, а значит элемент перекочует в другой контейнер. При этом он не будет копироваться или перемещаться, сам узел будет вырезан из одного контейнера и вставлен в другой. То есть все итераторы, которые нацелены на этот узел так и будут на него нацелены, даже если он в другом контейнере. Цитата:
Всё нормально. Перечитайте еще раз Цитата:
и "указывает" на тот же узел списка. Но теперь этот узел находится в другом списке. Это стандартизированное поведение. Дальнейший спор бессмыслен. Последний раз редактировалось Croessmah; 01.03.2016 в 17:20. |
||||
01.03.2016, 17:17 | #16 |
Заблокирован
Регистрация: 06.02.2011
Сообщений: 1,999
|
мне такая дурь в голову не приходила. думаю нечего хорошего от этого не будет.
я всегда пользовался итераторами только из своего контейнера. Последний раз редактировалось RAFA91; 01.03.2016 в 17:20. |
01.03.2016, 17:24 | #17 |
Форумчанин
Регистрация: 22.02.2016
Сообщений: 145
|
правильно, старые итераторы д.б. недействительны после перемещения, но т.к. реального перемещения элементов в памяти не происходит, то старые итераторы продолжают указывать на эти элементы т.к. никто не стирал в этих итераторах значения адресов памяти. Другой вопрос, что будет, если без повторной инициализации, использовать эти итераторы для дальнейших манипуляций? М.б. так, что манипулятор содержит две ссылки: на элемент контейнера и на сам контейнер. При такой реализации, действия с манипулятором разрушат вообще все данные. К сожалению, я сам книжку не понял да и забыл уже
Возьму в кредит мильён по 100% годовых на сто лет.
|
01.03.2016, 18:12 | #18 |
Заблокирован
Регистрация: 06.02.2011
Сообщений: 1,999
|
в основном чудес можно ждать от итератора вектора когда вставляем или удаляем элемент.
список в этом плане не капризный. |
01.03.2016, 19:16 | #19 | |
Вредный кошак
Участник клуба
Регистрация: 14.10.2012
Сообщений: 1,159
|
Цитата:
Если Вы с ним не знакомы, это не значит, что это чудо! |
|
02.03.2016, 12:42 | #20 |
Заблокирован
Регистрация: 06.02.2011
Сообщений: 1,999
|
я с итераторами вектора имел дело.
так вот там при вставке обьекта , происходит перезапись всего контейнера. поэтому функция вставки возвращает итератор уже на обновленный контейнер. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Итератор для двусвязного списка | Black_Dynamite | Помощь студентам | 0 | 07.11.2013 22:04 |
итератор set c++ | Arrioh | Помощь студентам | 1 | 25.12.2012 16:01 |
Итератор списка по значению | Link0 | Общие вопросы по Java, Java SE, Kotlin | 0 | 21.11.2010 14:02 |