Информация об изменениях

Сообщение Re[4]: валидность итератора при move контейнера от 26.02.2019 16:06

Изменено 26.02.2019 16:07 niXman

Re[4]: валидность итератора при move контейнера
Здравствуйте, andrey.desman, Вы писали:

AD>То есть, итератор не может ссылаться на внутренние данные объекта.

да, иначе он станет невалидным.

AD>Например, std::string с фиксированным in-place буфером.

AD>Но для std::string и нет гарантий переезда итераторов после move.

я никогда не задумывался об этом, но да, in-place буфер получается автоматический массив член класса, и если std::string создан на стеке — его не перенести. и если std::string создан в куче — его тоже не перенести, ибо в С++ нет возможности по адресу память понять, это стек или куча...
Re[4]: валидность итератора при move контейнера
Здравствуйте, andrey.desman, Вы писали:

AD>То есть, итератор не может ссылаться на внутренние данные объекта.

да, иначе он станет невалидным.

AD>Например, std::string с фиксированным in-place буфером.

AD>Но для std::string и нет гарантий переезда итераторов после move.

я никогда не задумывался об этом, но да, in-place буфер получается автоматический массив член класса, и если std::string создан на стеке — его не перенести. но даже если std::string создан в куче — его тоже не перенести, ибо в С++ нет возможности по адресу память понять, это стек или куча...