这更像是一个样式而不是性能问题。我刚刚将(大部分)我的指针转换为 shared_ptr 对象,并且不情愿地接受了weak_ptrs 作为原始指针的替代品。我的问题是,迭代共享指针对象的序列(比方说向量)的首选方法是什么?这是我一直在做的事情:
std::vector<std::shared_ptr<A>> my_sequence;
// Do something to fill my_sequence;
for (std::shared_ptr<A> const& ptr : my_sequence)
{
ptr->AMethod();
}
这违反了 *don't use shared_ptr references* 规则,那么有什么好的选择,为什么?
我要问的问题是;该技术是否稳健,即。对于 AMethod() 超小和 my_sequence 超大,此方法是否会由于 shared_ptr 副本而开始不必要地阻碍性能?它可读吗?简单吗?