【发布时间】:2021-12-26 15:27:05
【问题描述】:
我阅读了很多关于矢量现代用法的文档。
出现的一个常见情况是,“您可以将每个 push_back 替换为 emplace_back”。是真的吗?我不确定,事实是我不明白智能指针的想法。
那么,放置智能指针与将其推入向量有区别吗?
换句话说:
myVector.emplace_back(std::make_shared< XXX >(x, y, z));
VS
myVector.push_back(std::make_shared< XXX >(x, y, z));
我阅读了有关放置智能指针的评论,并在插入导致内存泄漏之前引发了可能的异常(低内存)。是真的吗? Memory leaking
最后,我希望能写出这样的东西:
myVector.emplace_back(x, y, z);
但我很确定,我可以忘记它。所以这就是为什么我在考虑使用智能指针安放的真正好处。
【问题讨论】:
-
为什么首先要将指针存储在向量中?
-
@Raildex 有 许多 个有效的用例。
-
因为我想与应用程序的某些部分共享向量中的项目。但保留一个可以访问所有这些的地方。
-
@SébastienBémelmans 如果您能引用您阅读的评论,将会很有帮助。
-
你在使用多态吗?如果没有,您可能只是将对象存储在向量中,而不是存储指针。
标签: c++ c++11 vector smart-pointers