Mor*_*enn 19 c++ smart-pointers shared-ptr c++11
我试图找到一些简单的方法来安置元素,std::vector<std::shared_ptr<int>>但不能带来任何东西.std::shared_ptr将指针作为参数,所以我仍然可以这样写:
std::vector<std::shared_ptr<int>> vec;
vec.emplace_back(new int(10));
Run Code Online (Sandbox Code Playgroud)
但是,new如果可能的话,我不想手工使用,如果可能的话,我宁愿使用std::make_shared.问题是,如果我真的想要使用它,我必须使用它push_back而失去就地构造的优势:
std::vector<std::shared_ptr<int>> vec;
vec.push_back(std::make_shared<int>(10));
Run Code Online (Sandbox Code Playgroud)
有没有什么办法让两者的优点emplace_back和std::make_shared?如果没有,在这种情况下是否应该遵循指引?
编辑:实际上,我问了这个问题,但有一个无关的问题.Andy的答案是好的,并且使用这两个emplace函数并没有任何实际问题std::make_shared.
And*_*owl 19
您可以让就地移动构造发生:
vec.emplace_back(std::make_shared<int>(42));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5857 次 |
| 最近记录: |