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

Constructing a std::vector<T> from a T* pointer?

我尝试通过谷歌搜索寻找答案,但我想知道是否可以从 T* 指针构建 std::vector<T>

我查看了 API 文档,从给定的构造函数看来这是不可能的,C++11 data() 用于容器的分配。

我问是因为我有一个 returns 和 int* 的内存映射文件,重新使用广泛使用 std::vector<T> 的 class 会很棒

我正在寻找这样的东西:

const size_t n = ...
int* map = mmap(....);
std::vector<int> vec(map, n);

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

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

如果去掉内存管理的要求,vector 的接口非常简单,围绕 mmap 缓冲区编写一个兼容的包装器不会花太多时间。