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


コメント