Здравствуйте, Shmj, Вы писали:
S>Но еще есть вопрос наглядности — а это тоже важно. Чтобы получать нужную часть пакета — одной удобной строчкой с внятным названием — т.е. чтобы вся магия манипуляции с байтами — была не видна при взаимодействии.
Секунду, вам нужна часть вектора или весь ?
Невозможно забрать только часть без копирования.
S>Но в векторе, все-же, кой-чего нет — это простой возможности забрать владение на data у самого вектора.
Т.е. вы хотите, чтобы у вектора был интерфейс с возможностью отдать владение ?
Самым простым вариантом тогда будет использование unique_ptr<byte[]> , у него как раз есть
release, который именно это и делает:
void f(char* p)
{
delete[] p;
}
int main()
{
std::unique_ptr<char[]> up = std::make_unique<char[]>(10);
char* p = up.release(); // отдаём владение
f(p);
}
Ну или свой вектор тогда можно сделать как вариант.