【发布时间】:2019-01-27 12:20:24
【问题描述】:
我有以下代码:
class MarchingEvent
{
...
};
typedef std::list< std::shared_ptr<MarchingEvent> > Segment;
我能做到吗:
void myFunction(std::shared_ptr<MarchingEvent> A)
{
Segment segment;
segment.push_back( A ); // <- Questionable line.
}
将 A 推送到 segment 时,我的智能指针会正确递增吗?
【问题讨论】:
-
如果您将
std::shared_ptr视为所有权 的一种形式,那么通过添加指向列表的指针,您现在已经添加了MarchingEvent的所有者。 -
在不相关的注释中,“默认”容器应该几乎总是
std::vector。只有当您有特殊要求时,您才应该使用其他容器或容器适配器。 -
@πάντα ῥεῖ:非常感谢!是的,智能指针在推送到列表时得到了正确处理。
-
“将 A 推入分段时,我的智能指针会正确递增吗?” 是什么让您怀疑它能否正常工作?
标签: c++ c++11 stl std shared-ptr