C++14 unique_ptrをvectorに格納するときの注意点

C++14です。

std::vectorに、unique_ptrを入れたいときは

#include <vector>
#include <memory>

std::unique_ptr<SOMETYPE> ptr = std::make_unique<SOMETYPE>(some_arguments);
a_vector->push_back(std::move(ptr));

のような感じで、std::moveが要るので注意しよう。所有権がvectorに移るので。

vector自体もunique_ptrで持つべきなのだろうか? まあ、

using NewType = std::unique_ptr<std::vector<SOMETYPE>>;

を使えばいいか。

参考: c++ - Why can I not pushback a uniqueptr into a vector? - Stack Overflow

コメント

タイトルとURLをコピーしました