Я собираюсь написать что-то сам, так как я не нашел то, что искал, но решил, что я должен спросить толпу перед погружением.
- Есть ли тип контейнера с буфером или stl произвольным доступом, который позволяет передавать в предварительно заполненный буфер?
Мнимая (?) тип контейнера будет работать примерно так:
const int blobSize = unpackBlobSize( msg );
int * blob = unpackBlobData( msg );
SpecialVector<int> mySpecialIntVector( blob, blobSize );
В основном я взаимодействую с старой библиотекой с исходными указателями-буферами c-style, но хотел бы использовать семантику контейнера стиля С++, не требуя этапа копирования. Я бы надеялся, что это std::vector плюс предварительно выделенный и предварительно заполненный конструктор буфера и, минус изменение размера.
У Libeigen есть такая функциональность с их Eigen:: Map, которая позволяет такие вещи, как:
int array[9];
for(int i = 0; i < 9; ++i)
array[i] = i;
stl::cout << Eigen::Map<Eigen::Matrix3i>(array) << stl::endl;
Кто-нибудь знает шаблон boost или stl, который охватывает эти ограничения?