【问题标题】:Boost vectors versus STL vectorsBoost 向量与 STL 向量
【发布时间】:2011-09-11 19:07:36
【问题描述】:

boost::numeric::ublas::vectorstd::vector 在运行时效率方面如何比较?

是否可以假设我可以将整个程序从使用 std::vector 转换为使用 boost::numeric::ublas::vector 只需编写:

#include <boost/numeric/ublas/vector.hpp>
using namespace boost::numeric::ublas;

而不是#include&lt;vector&gt;?我可以像在所有方面都是 STL 向量一样使用 boost 向量吗?

&lt;algorithm&gt; 中的函数是否适用于 boost 向量?他们使用相同的迭代器吗?

它们在 C++0x 中工作吗?它们适用于基于范围的循环吗?

【问题讨论】:

  • std::vector 有什么问题?

标签: c++ boost stl vector ublas


【解决方案1】:

这些是完全正交的数据类型:前者表示“向量”(一维矩阵)的代数定义,而后者表示“向量”(一维数组)的计算机科学定义。

他们比较。

【讨论】:

【解决方案2】:

如果你想做线性代数运算,比如矩阵向量乘法等,你应该只使用 ublas::vector。 它们不提供与 std::vector 相同的功能和接口。 就运行时效率而言,据我所知,没有什么比 std::vector 更好。

【讨论】:

  • 真的吗?因为我很确定像 std::list 节拍向量这样的链接列表用于插入和删除元素。 :p
  • @wheaties 我也这么认为,但震惊地看到 vector 大多是好的。
  • 这真的取决于大小。在巨大的std::vector 中间插入应该比在同样巨大的std::list 中间插入要慢。
  • 请参阅 here for evidence/benchmark BlaXpirit 所说的内容。当然,尺寸是这里的重要元素。
  • @rubenvb :公平地说,这是以 1997 年 2 月 发布的 MSVC 5 为基准的——不完全是最新的。 ;-]
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-05
  • 1970-01-01
相关资源
最近更新 更多