从 T* 指针构造一个 std::vector<T>?
Constructing a std::vector<T> from a T* pointer?
我尝试在谷歌上搜索答案,但我想知道是否可以从T*
指针构建std::vector<T>
?
我查看了 API 文档,看起来从给定的构造函数中不可能实现,C++11 data()
用于容器的分配。
我问,因为我有一个返回int*
的内存映射文件,重用一个广泛使用std::vector<T>
的类会很棒
我正在寻找这样的东西:
const size_t n = ...
int* map = mmap(....);
std::vector<int> vec(map, n);
std::vector
就是管理它的缓冲区。 当项目被推入容器时,它可能会删除并重新分配新的缓冲区。 对于std::vector
来说,控制现有向量是没有意义的,因为它最终可能会尝试删除和重新分配。
如果需要,可以为使用 mmap 的向量编写自定义分配器,但不能使向量控制现有缓冲区。
如果你去掉内存管理的要求,vector 的接口非常简单,在 mmap'ed 缓冲区周围编写一个兼容的包装器并不需要太多。
相关文章:
- 使用std::vector的OpenCL矩阵乘法
- POCO::PostgreSQL:如何将std::vector支持添加到`Binder::bind`
- std::vector的包装器,使数组的结构看起来像结构的数组
- 编译器如何区分std::vector的构造函数
- 使用 pqxx 将 std::vector 存储在 postgresql 中,并从数据库中检索它
- 在std::vector上存储带有模板的类实例
- 在main()之外初始化std::vector会导致性能下降(多线程)
- 为什么std::vector比数组慢
- std::vector::迭代器是否可以合法地作为指针
- 如何将二进制格式的 C++ 对象的 std::vector 保存到磁盘?
- 为什么std::vector和std::valarray初始化构造函数不同
- ";结果类型必须是可从输入范围的值类型""构造的;创建std::vector时
- 在没有未定义行为的情况下实现类似std::vector的容器
- 如何调整 std::vector of Eigen::MatrixXd 的大小
- 使用 std::vector::reverse_iterator 将 int 序列化为字节向量?
- 如何将AERT_Allocate与 std:vector 一起使用
- 推导 std::vector::back() 的返回类型
- 如何将原始字节附加到 std::vector?
- std::vector 没有重载函数的实例与参数列表匹配
- 如果 KEY 是 std::list 或 std::vector 而不是值,那么 std::map 的默认行为是什么?