stdvector - 让 std::vector 从原始指针中获取所有权
问题描述
我有一个传入的非托管缓冲区,其类型是这样的BYTE*
,所以这是一个字节缓冲区,长度信息也是已知的,现在我想使用字节缓冲区来创建一个这样的向量std::vector<BYTE>
,
我知道我可以使用复制并稍后手动删除此缓冲区,如下所示,
foo(BYTE* in, int size) {
...
std::vector<BYTE> vec;
std::copy(in, in + size, std::back_inserter(vec));
...
}
我的问题是在这里避免复制的最佳方法是什么?我觉得应该有一种创建这个向量的好方法,这样这个向量就可以使用给定的指针来获得这个缓冲区的所有权,除了避免复制之外,另一个优点是我不必delete
在复制后手动处理这个缓冲区。我认为肯定有一些优雅的方法可以安全地做到这一点。
解决方案
推荐阅读
- linux - 检查参数的特定值,如果不匹配则更改它
- docker - 继续在 TFS 上集成 docker
- r - 将逻辑运算符表与向量组合以生成组合列表
- powerbi - 组内最大差异
- java - android上的Microsoft Graph,在检索文件时响应404
- nativescript - 在 nativescript angular 应用程序上使用 Nem-library 或 nem-sdk
- android - java.lang.RuntimeException:画布:试图绘制太大(125440000字节)位图
- javascript - How to control execution of 2 blocks of code?
- python - Django ORM Group BY 并返回附加字段
- mysql - PDO 准备好的语句绑定