如何使用独特的指针向量?

use*_*020 2 c++ unique-ptr

我用它vector<unique_ptr<Data>>来存储我的数据,用于自动内存管理和低成本unique_ptr.我有一个函数来尝试将新创建的数据添加到其中.可以真实地添加或不添加数据.它被添加,我不需要关心它的内存删除,因为指针向量将处理它.如果没有添加,我希望可以自动删除新创建的数据.有没有简单的方法来实现它?该功能可能如下所示或其他类似形式.谢谢.

// Return true if really added, return flase if not.
bool add(vector<unique_ptr<Data>>& vec, Data* newData);
Run Code Online (Sandbox Code Playgroud)

根据Dave的回答,bool add(vector<unique_ptr<Data>>& vec, std::unique_ptr<Data>& newData)unique_ptr非公共可复制以来更好吗?这里引用用于第二个参数.

Dav*_*vid 8

也接受newDataunique_ptr.

bool add(vector<unique_ptr<Data>>& vec, std::unique_ptr<Data> newData)
{
    if(blah blah blah)
    {
        vec.push_back(std::move(newData));
        return true;
    }
    return false;
}
Run Code Online (Sandbox Code Playgroud)