Сообщение валидность итератора при move контейнера от 26.02.2019 15:43
Изменено 26.02.2019 15:44 niXman
валидность итератора при move вектора
привет.
вот есть у нас объект вектора.
вот есть у нас объект итератора для этого вектора.
и вот мы сделали move() для вектора. в каком состоянии итаратор?
казалось бы, итератор для вектора — просто указатель. и, если мы не переаллоцируем вектор — указатель быдет указывать в прежний адрес.
но, есть дебажные итераторы(говорю о libstdc++) которые не просто указатель. я, по правде сказать, не заглядывал им внтурь, наверняка они все так же хранят указатель.
вопрос в том, есть ли какие-то гарантии того, что итераторы остаются валидными при перемещении(move) контейнера? (по логике — должны быть)
спасибо.
вот есть у нас объект вектора.
вот есть у нас объект итератора для этого вектора.
и вот мы сделали move() для вектора. в каком состоянии итаратор?
казалось бы, итератор для вектора — просто указатель. и, если мы не переаллоцируем вектор — указатель быдет указывать в прежний адрес.
но, есть дебажные итераторы(говорю о libstdc++) которые не просто указатель. я, по правде сказать, не заглядывал им внтурь, наверняка они все так же хранят указатель.
вопрос в том, есть ли какие-то гарантии того, что итераторы остаются валидными при перемещении(move) контейнера? (по логике — должны быть)
спасибо.
валидность итератора при move контейнера
привет.
вот есть у нас объект вектора.
вот есть у нас объект итератора для этого вектора.
и вот мы сделали move() для вектора. в каком состоянии итаратор?
казалось бы, итератор для вектора — просто указатель. и, если мы не переаллоцируем вектор — указатель быдет указывать в прежний адрес.
но, есть дебажные итераторы(говорю о libstdc++) которые не просто указатель. я, по правде сказать, не заглядывал им внтурь, наверняка они все так же хранят указатель.
вопрос в том, есть ли какие-то гарантии того, что итераторы остаются валидными при перемещении(move) контейнера? (по логике — должны быть)
спасибо.
вот есть у нас объект вектора.
вот есть у нас объект итератора для этого вектора.
и вот мы сделали move() для вектора. в каком состоянии итаратор?
казалось бы, итератор для вектора — просто указатель. и, если мы не переаллоцируем вектор — указатель быдет указывать в прежний адрес.
но, есть дебажные итераторы(говорю о libstdc++) которые не просто указатель. я, по правде сказать, не заглядывал им внтурь, наверняка они все так же хранят указатель.
вопрос в том, есть ли какие-то гарантии того, что итераторы остаются валидными при перемещении(move) контейнера? (по логике — должны быть)
спасибо.