2

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

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

根据戴夫的回答,非公开可复制bool add(vector<unique_ptr<Data>>& vec, std::unique_ptr<Data>& newData)更好吗?unique_ptr这里在第二个参数中使用了一个引用。

4

2 回答 2

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;
}
于 2013-02-07T18:32:59.927 回答
-1

您想要实现的语义是什么。

FWIW:unique_ptr 的向量很少是一个好主意。 如果您希望向量具有独占所有权,则最好使用 Boost 的指针向量。

于 2013-02-07T19:04:55.290 回答