Re: Про красивость работы с std::vector
От: Muxa  
Дата: 15.03.25 06:03
Оценка: -1 :)
S>- будет создавать полную копию всех данных. Как бы постоянная ловушка. Т.е. нужно не забывать писать:

S>
S>std::vector<uint8_t>& t = obj.getData();
S>


Непонятно причем тут вектор?
Оно будет работать аналогично с любым типом возвращаемого объекта.
Хочешь ссылку — дай знать об этом компилятору.

S>И далее. Что если я захочу в итоге переместить данные, забрать владение у MyClass — как красивее оформить?


S>
S>std::vector<uint8_t> takeData()
S>{
S>    return std::move(data);
S>}
S>

S>Здесь вызов std::move следует убрать. Несмотря на то, что в коде пытаются "подсказать" компилятору, что возвращаемый объект следует перемещать, а не копировать, используя функцию std::move, компилятор будет обязан сгенерировать более медленный ассемблерный код.

А если вернуть результат как &&?

Причем тут вектор — до сих пор неясно.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.