【问题标题】:Differences between VS2010's std::shared_ptr and boost::shared_ptrVS2010 的 std::shared_ptr 和 boost::shared_ptr 的区别
【发布时间】:2012-04-17 09:20:01
【问题描述】:

VS2010的std::shared_ptrboost::shared_ptr有什么区别?

实现几乎相同吗?还是有显着差异?

什么是最有效/优化的?

谢谢。

【问题讨论】:

  • 为什么不看看源代码?
  • 存在差异。我们如何知道它们对您是否重要?
  • @Nick:一般来说,Boost 和 STL C++ 源代码读起来并不简单(有时它们是read-only/write-only code)。我认为它们更像是黑匣子。
  • @BoPersson:如果存在已知差异,阅读它们会很有趣。例如Boost 的空间效率更高,VS2010 的速度更快,等等。

标签: c++ visual-studio-2010 boost shared-ptr


【解决方案1】:

VS2010 的 shared_ptr 实现符合(或至少试图符合)C++11 标准。

另一方面,boost::shared_ptr 开发得更早,并且作为 boost 的一部分而不是 C++ 标准库。我相信两者对于生产使用都足够有效,但是使用 boost 会迫使你……使用 boost ;)。这在某些情况下是完全不能接受的。

【讨论】:

  • 使用 Boost 不是问题(还有其他 Boost 库可以派上用场,但 VS2010 std:: 中不存在)。而且 AFAIK 可以在商业产品中使用 Boost(如果我错了,请纠正我)。
  • FWIW,在 VS2008 中 tr1::shared_ptr 实现是错误的(尽管在 VS2010 中他们似乎修复了这个特定错误):connect.microsoft.com/VisualStudio/feedback/details/488804/…
  • 可以在商业产品中使用它,但是一些公司(我相信甚至 google[需要引用])对 boost 和其他库都有严格的代码政策。
  • @BartekBanachewicz 是的,你是对的,Google 不支持所有 boost 收藏,但只支持他们批准的收藏。 Google 允许使用boost:arrayboost:ptr_container。谷歌风格指南:google-styleguide.googlecode.com/svn/trunk/cppguide.xml#Boost
猜你喜欢
  • 2013-04-16
  • 2011-04-19
  • 2012-09-01
  • 2011-06-21
  • 2013-06-12
  • 1970-01-01
  • 2011-09-27
  • 2011-09-13
相关资源
最近更新 更多