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ですか? ここでは、2 番目の引数で参照が使用されています。

4

2 に答える 2

8

newDataとしても受け入れunique_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 に答える