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 push_back a unique_ptr into a vector? - Stack Overflow