我试图找到一些简单的方法来在 a 中放置元素,std::vector<std::shared_ptr<int>>
但什么都没有。std::shared_ptr
将指针作为参数,所以我仍然可以这样写:
std::vector<std::shared_ptr<int>> vec;
vec.emplace_back(new int(10));
但是,如果可能的话,我不想new
手动使用,如果可能的话,我宁愿使用std::make_shared
。问题是,如果我真的要使用它,我必须使用它,push_back
而失去了就地构建的优势:
std::vector<std::shared_ptr<int>> vec;
vec.push_back(std::make_shared<int>(10));
有什么办法可以同时兼具emplace_back
和的优点std::make_shared
吗?如果没有,在这种情况下是否有我应该遵循的指导方针?
编辑:实际上,我问了这个问题,但有一个不相关的问题。emplace
Andy 的回答很好,同时使用这两个功能没有任何实际问题std::make_shared
。