首页 > 解决方案 > 让 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在复制后手动处理这个缓冲区。我认为肯定有一些优雅的方法可以安全地做到这一点。

标签: stdvector

解决方案


推荐阅读