Я собираюсь написать что-то сам, так как я не нашел то, что я искал, но решил, что должен спросить толпу, прежде чем нырнуть.
Тип контейнера воображаемый (?) будет работать что-то вроде этого:
const int blobSize = unpackBlobSize( msg );
int * blob = unpackBlobData( msg );
SpecialVector<int> mySpecialIntVector( blob, blobSize );
В основном я связываю старую библиотеку с необработанными указателями на буферы в стиле C, но хотел бы использовать семантику контейнера в стиле C ++, не требуя шага копирования. Я бы надеялся получить 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, который покрывает эти ограничения?