Сообщение Re: Про красивость работы с std::vector от 15.03.2025 14:27
Изменено 15.03.2025 18:48 m2user
Re: Про красивость работы с std::vector
S>Не очень красиво что при обращении:
S>
S>- будет создавать полную копию всех данных. Как бы постоянная ловушка. Т.е. нужно не забывать писать:
S>
Можно обернуть vector в shared_ptr (и поле класса и тип возвращаемого значения getData().
Тожне не очень красиво выглядит, но зато думать насчет move и пр. NRVO уже не понадобится.
Либо std::span (но он только в C++20, хотя написать свой аналог для частного случая IMHO несложно).
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>- будет создавать полную копию всех данных. Как бы постоянная ловушка. Т.е. нужно не забывать писать:
S>
Можно обернуть vector в shared_ptr (и поле класса и тип возвращаемого значения getData().
Тоже не очень красиво выглядит, но зато думать насчет move и пр. NRVO уже не понадобится.
Либо std::span (но он только в C++20, хотя написать свой аналог для частного случая IMHO несложно).
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 несложно).