Re[10]: Про перемещение (на примере кода)
От: Shmj Ниоткуда  
Дата: 15.04.25 19:38
Оценка:
Здравствуйте, _NN_, Вы писали:

S>>Но еще есть вопрос наглядности — а это тоже важно. Чтобы получать нужную часть пакета — одной удобной строчкой с внятным названием — т.е. чтобы вся магия манипуляции с байтами — была не видна при взаимодействии.

_NN>Секунду, вам нужна часть вектора или весь ?
_NN>Невозможно забрать только часть без копирования.

Части вектора в виде span — беру пока объект живой и владеет вектором — для удобства. Можно было бы все те же операции проделать до создания объекта — но это не нагладно было бы и не дешевле по ресурсам.

S>>Но в векторе, все-же, кой-чего нет — это простой возможности забрать владение на data у самого вектора.

_NN>Т.е. вы хотите, чтобы у вектора был интерфейс с возможностью отдать владение ?
_NN>Самым простым вариантом тогда будет использование unique_ptr<byte[]> , у него как раз есть release, который именно это и делает:

_NN>
_NN>void f(char* p)
_NN>{
_NN>  delete[] p;
_NN>}

_NN>int main()
_NN>{
_NN>  std::unique_ptr<char[]> up = std::make_unique<char[]>(10);
_NN>  char* p = up.release(); // отдаём владение

_NN>  f(p);
_NN>}
_NN>


_NN>Ну или свой вектор тогда можно сделать как вариант.


Ну да, вроде еще можно кастомный аллокатор для std::vector.
=сначала спроси у GPT=
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.