C++ 构建std::vector<;T>;从T*指针?

C++ 构建std::vector<;T>;从T*指针?,c++,pointers,c++11,vector,stl,C++,Pointers,C++11,Vector,Stl,我试着用谷歌搜索答案,但我想知道是否有可能从T*指针构造std::vector 我查看了API文档,从给定的构造函数来看这是不可能的,C++11data()用于容器的分配 我这样问是因为我有一个返回int*的内存映射文件,如果重用一个广泛使用std::vector 我在找这样的东西: const size_t n = ... int* map = mmap(....); std::vector<int> vec(map, n); const size\u t n=。。。 int*m

我试着用谷歌搜索答案,但我想知道是否有可能从
T*
指针构造
std::vector

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

我这样问是因为我有一个返回
int*
的内存映射文件,如果重用一个广泛使用
std::vector

我在找这样的东西:

const size_t n = ...
int* map = mmap(....);
std::vector<int> vec(map, n);
const size\u t n=。。。
int*map=mmap(..);
std::向量向量向量c(map,n);

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

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


如果不考虑内存管理的要求,vector的接口非常简单,在mmap缓冲区周围编写一个兼容的包装器也不需要花费太多时间。

你的意思是制作一个副本,还是重用现有的缓冲区?
std::vector vec(map,map+n)
将用
map
@PavelMinaev指向的第一个
n
整数实例化一个向量。我已经从mmap()函数分配了内存,因此我希望它重用此分配,而不是创建内部分配的容器。另请参阅