我尝试使用谷歌搜索答案,但我想知道是否可以从std::vector<T>
指针构建T*
?
我查看了API文档,看起来它不可能来自给定的构造函数,而C ++ 11 data()
用于容器的分配。
我问我有一个返回int*
的内存映射文件,重用一个广泛使用std::vector<T>
我正在寻找类似的东西:
const size_t n = ...
int* map = mmap(....);
std::vector<int> vec(map, n);
答案 0 :(得分:3)
std::vector
就是管理它的缓冲区。当项目被推入容器时,它可能会删除并重新分配新的缓冲区。 std::vector
控制现有的向量是没有意义的,因为它最终可能会尝试删除和重新分配。
如果您愿意,可以为使用mmap的矢量编写自定义分配器,但不能让矢量控制现有缓冲区。
如果你不考虑内存管理的要求,vector的界面非常简单,在你的mmap缓冲区周围写一个兼容的包装器并不会花费太多。