Есть ли тип контейнера с произвольным доступом, который принимает предварительно заполненный и предварительно выделенный буфер?

Я собираюсь написать что-то сам, так как я не нашел то, что я искал, но решил, что должен спросить толпу, прежде чем нырнуть.

  • Есть ли тип контейнера произвольного доступа boost или stl, который позволяет передавать предварительно заполненный буфер?

Тип контейнера воображаемый (?) будет работать что-то вроде этого:

  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, который покрывает эти ограничения?

10
задан Catskul 28 July 2011 в 06:36
поделиться