我想找到一种方法将几个不同但已知且相对较小的大小的std::vectors
存储在连续的内存中。我意识到我可以编写自己的类,例如,使用一个非常大的数组和指向该数组内每个子段开头的指针作为单独实体处理,但似乎应该有更聪明的方法来完成这个任务。
是否有一种方法可以使用分配器(allocators
),例如创建连续的std::vectors
?我不想因为想要这种内存局部性而重复造轮子。
我不知道如何开始编码。我需要创建一个分配器,它接受指向内存的指针,在那里分配一个向量,然后以某种方式返回该向量结尾的地址,这样下一个std::vector
的分配器就可以获取并再次执行此操作。一个allocator
怎么可能返回一个值呢?
std::array<T,N>
吗?这样更容易将它们放置在内存中,由于您没有增加向量的大小,所以不必要的成员函数(例如push_back(...)
)将被删除。当然,如果您使用的是C++11之前的版本,则无法使用此选项。 - Sergey Kalinichenko