Я хотел бы найти способ хранить несколько std::vectors
, каждый из которых имеет разный, но известный и достаточно небольшой размер, в непрерывной памяти. Я понимаю, что мог бы написать свой собственный класс, скажем, с очень большим массивом и с указателями на начало каждого подраздела массива внутри большего массива, рассматриваемого как отдельный объект, но кажется, что должен быть более разумный способ сделать это .
Есть ли способ использовать allocators
, например, для создания смежных std::vectors
? Я бы не хотел изобретать велосипед только потому, что мне нужна эта память-локальность в остальном нормальная std::vectors
Я не знаю, как даже начать программировать. Мне нужно создать распределитель, который берет указатель на память, размещает там вектор, а затем каким-то образом передает обратно адрес конца этого вектора, чтобы следующий распределитель std::vector
мог захватить его и сделать это снова. Как allocator
может вернуть значение?
std::array<T,N>
? Гораздо проще разместить их в памяти, и, поскольку вы не увеличиваете свои векторы, ненужные функции-члены, такие какpush_back(...)
, исчезнут. Конечно, если вы используете пред-С++ 11, это не вариант. - person Sergey Kalinichenko   schedule 30.07.2015std::vector<T, std::allocator<T>>
? Потому что использование пользовательского распределителя влияет на тип вектора. - person MSalters   schedule 31.07.2015std::vector<int>&
. - person MSalters   schedule 31.07.2015