Контейнер-указатель RAW - PullRequest
       3

Контейнер-указатель RAW

2 голосов
/ 27 ноября 2010

У меня есть необработанный указатель, который указывает на массив данных.Я хотел бы обернуть этот указатель в контейнер с семантикой контейнера STL (например, std :: vector).Имеет ли STL какую-либо функцию, которая позволяет это?

например

class my_class
{
public:

   std::some_container<char> get_data() { return std::some_container(my_data, my_data_size);}

private:
   char* my_data;
   size_t my_data_size;
};

РЕДАКТИРОВАТЬ:

Я не могу использовать std :: vector напрямую, так как память выделяется внешнимапи.

Ответы [ 2 ]

5 голосов
/ 27 ноября 2010

STL нет, Boost делает:

boost::iterator_range<char*> get_data() { 
    return boost::iterator_range<char*>(my_data, my_data+my_data_size);
}
1 голос
/ 27 ноября 2010

Возможно, это выполнимо, если вы используете std::vector с пользовательским «распределителем» памяти, но для меня это не очень хорошая идея.

Поскольку я не знаю, как этопозвольте вам покончить с этим без написания кода, я предлагаю потратить время на написание собственного STL-подобного контейнера для этого сценария (или, что еще лучше, найти открытый с открытым кодом!).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...