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

Сообщение Re: Про красивость работы с std::vector от 15.03.2025 14:27

Изменено 15.03.2025 18:48 m2user

Re: Про красивость работы с std::vector
S>Не очень красиво что при обращении:

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


S>- будет создавать полную копию всех данных. Как бы постоянная ловушка. Т.е. нужно не забывать писать:


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


Можно обернуть vector в shared_ptr (и поле класса и тип возвращаемого значения getData().
Тожне не очень красиво выглядит, но зато думать насчет move и пр. NRVO уже не понадобится.
Либо std::span (но он только в C++20, хотя написать свой аналог для частного случая IMHO несложно).
Re: Про красивость работы с std::vector
S>Не очень красиво что при обращении:

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


S>- будет создавать полную копию всех данных. Как бы постоянная ловушка. Т.е. нужно не забывать писать:


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


Можно обернуть vector в shared_ptr (и поле класса и тип возвращаемого значения getData().
Тоже не очень красиво выглядит, но зато думать насчет move и пр. NRVO уже не понадобится.
Либо std::span (но он только в C++20, хотя написать свой аналог для частного случая IMHO несложно).