Пусть std :: vector принимает владение от необработанного указателя - PullRequest
0 голосов
/ 29 мая 2020

У меня передан неуправляемый буфер с таким типом, как этот BYTE*, так что это байтовый буфер, и информация о длине также известна, и теперь я хочу использовать байтовый буфер для создания такого вектора, как этот std::vector<BYTE>,

Я знаю, что могу использовать копирование и вручную удалить этот буфер позже, как показано ниже:

foo(BYTE* in, int size) {
    ...
    std::vector<BYTE> vec;
    std::copy(in, in + size, std::back_inserter(vec));
    ...
}

Мой вопрос: как лучше всего избежать копирования здесь? Я считаю, что должен быть хороший способ создать этот вектор, чтобы этот вектор владел этим буфером с использованием заданного указателя, кроме предотвращения копирования, еще одно преимущество состоит в том, что мне не нужно вручную delete этот буфер после копирования. Я думаю, что определенно есть элегантный способ сделать это безопасно.

...