从T *指针构造std :: vector <t>?</t>

时间:2015-01-03 15:00:17

标签: c++ pointers c++11 vector stl

我尝试使用谷歌搜索答案,但我想知道是否可以从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);

1 个答案:

答案 0 :(得分:3)

std::vector就是管理它的缓冲区。当项目被推入容器时,它可能会删除并重新分配新的缓冲区。 std::vector控制现有的向量是没有意义的,因为它最终可能会尝试删除和重新分配。

如果您愿意,可以为使用mmap的矢量编写自定义分配器,但不能让矢量控制现有缓冲区。

如果你不考虑内存管理的要求,vector的界面非常简单,在你的mmap缓冲区周围写一个兼容的包装器并不会花费太多。