Сообщение Re[9]: c++ указатели vs умные указатели от 22.12.2018 8:24
Изменено 22.12.2018 8:53 DDDX
Re[9]: c++ указатели vs умные указатели
Здравствуйте, lpd, Вы писали:
lpd>Здравствуйте, alex_public, Вы писали:
_>>Здравствуйте, lpd, Вы писали:
lpd>>>ОК, можно так, только я предпочел бы хранить в векторе указатели на Session, чтобы адреса объектов не менялись при расширении вектора. Получается, все-таки нужны указатели.
_>>Ну для начала это будет намного медленнее. Потому что подобная косвенная адресация убивает кэш процессора.
lpd>В данном случае действительно, список удобнее (я зря упомянул вектор, хотя во многих других случаях он может понадобиться).
std::deque
Я вот не могу сказать — перемещает он или нет. Когда-то про него читал, но уже все забыл.
Но.
У класса, которые я в него засовываю через emplace_back, явно запрещены конструкторы/операторы копирования/перемещения.
Значит не перемещает.
А потом я юзаю указатели на элементы.
lpd>Здравствуйте, alex_public, Вы писали:
_>>Здравствуйте, lpd, Вы писали:
lpd>>>ОК, можно так, только я предпочел бы хранить в векторе указатели на Session, чтобы адреса объектов не менялись при расширении вектора. Получается, все-таки нужны указатели.
_>>Ну для начала это будет намного медленнее. Потому что подобная косвенная адресация убивает кэш процессора.
lpd>В данном случае действительно, список удобнее (я зря упомянул вектор, хотя во многих других случаях он может понадобиться).
std::deque
Я вот не могу сказать — перемещает он или нет. Когда-то про него читал, но уже все забыл.
Но.
У класса, которые я в него засовываю через emplace_back, явно запрещены конструкторы/операторы копирования/перемещения.
Значит не перемещает.
А потом я юзаю указатели на элементы.
Re[9]: c++ указатели vs умные указатели
Здравствуйте, lpd, Вы писали:
lpd>Здравствуйте, alex_public, Вы писали:
_>>Здравствуйте, lpd, Вы писали:
lpd>>>ОК, можно так, только я предпочел бы хранить в векторе указатели на Session, чтобы адреса объектов не менялись при расширении вектора. Получается, все-таки нужны указатели.
_>>Ну для начала это будет намного медленнее. Потому что подобная косвенная адресация убивает кэш процессора.
lpd>В данном случае действительно, список удобнее (я зря упомянул вектор, хотя во многих других случаях он может понадобиться).
std::deque
Я вот не могу сказать — перемещает он или нет. Когда-то про него читал, но уже все забыл.
Но.
У класса, которые я в него засовываю через emplace_back, явно запрещены конструкторы/операторы копирования/перемещения.
Значит не перемещает.
А потом я юзаю указатели на элементы.
---
Дополню.
Я тут внимательно посмотрел на этот свой последний случай использования std::deque.
В отладочной версии у его элементов есть счетчик ссылок. То есть снаружи работают со смарт-указателями на эти элементы.
Пусть оно само следит за правильностью разрушения всего хоровода объектов, я лучше буду думать обабах более насущных проблемах.
lpd>Здравствуйте, alex_public, Вы писали:
_>>Здравствуйте, lpd, Вы писали:
lpd>>>ОК, можно так, только я предпочел бы хранить в векторе указатели на Session, чтобы адреса объектов не менялись при расширении вектора. Получается, все-таки нужны указатели.
_>>Ну для начала это будет намного медленнее. Потому что подобная косвенная адресация убивает кэш процессора.
lpd>В данном случае действительно, список удобнее (я зря упомянул вектор, хотя во многих других случаях он может понадобиться).
std::deque
Я вот не могу сказать — перемещает он или нет. Когда-то про него читал, но уже все забыл.
Но.
У класса, которые я в него засовываю через emplace_back, явно запрещены конструкторы/операторы копирования/перемещения.
Значит не перемещает.
А потом я юзаю указатели на элементы.
---
Дополню.
Я тут внимательно посмотрел на этот свой последний случай использования std::deque.
В отладочной версии у его элементов есть счетчик ссылок. То есть снаружи работают со смарт-указателями на эти элементы.
Пусть оно само следит за правильностью разрушения всего хоровода объектов, я лучше буду думать о