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

Сообщение Re[2]: про перемещение вопрос от 17.05.2019 12:11

Изменено 17.05.2019 12:12 rg45

Re[2]: про перемещение вопрос
Здравствуйте, B0FEE664, Вы писали:

BFE>Здравствуйте, borya_ilin, Вы писали:


_>>Я хочу чтобы содержимое вектора foos премещалось в cur_bar, а не копировалось

_>>И при этом чтобы foos очищался и его можно было продолжать использовть
_>>Какой интерфейс должен быть в 1) и что делать в 2) ?

BFE>Если речь об оптимизации по скорости, то замена set_foos(const std::vector<Foo> &foos) на swap_foos(std::vector<Foo>& foos) { member.swap(foos); ... } будет, ИМХО, наилучшей.


Ну, с учетом того, что старое содержимое никому не нужно, и контейнер все равно будет очищаться, можно без потерь эту очистку поместить внутрь функции, что позволит сохранить ее семантику и имя без изменений.
Re[2]: про перемещение вопрос
Здравствуйте, B0FEE664, Вы писали:

BFE>Здравствуйте, borya_ilin, Вы писали:


_>>Я хочу чтобы содержимое вектора foos премещалось в cur_bar, а не копировалось

_>>И при этом чтобы foos очищался и его можно было продолжать использовть
_>>Какой интерфейс должен быть в 1) и что делать в 2) ?

BFE>Если речь об оптимизации по скорости, то замена set_foos(const std::vector<Foo> &foos) на swap_foos(std::vector<Foo>& foos) { member.swap(foos); ... } будет, ИМХО, наилучшей.


Ну, с учетом того, что старое содержимое никому не нужно, и контейнер все равно будет очищаться, можно без потерь эту очистку поместить внутрь функции, что позволит сохранить ее семантику и имя без изменений. И что там будет внутри делаться — swap или перемещение — это уже детали реализации самой функции.