这里说 http://www.boost.org/doc/libs/1_42_0/libs/numeric/ublas/doc/unbounded_array.htm that
无界数组类似于
std::vector 可以在其中生长
大小超出任何固定范围。然而
unbounded_array 旨在最优
表现。因此无界_数组
不会对序列进行建模
std::vector 确实如此。
这是什么意思?
作为一名 Boost 开发人员,我可以告诉您,质疑文档中的陈述是完全可以的;-)
通过阅读这些文档和阅读源代码(参见存储.hpp http://www.boost.org/doc/libs/1_42_0/boost/numeric/ublas/storage.hpp)我可以说,考虑到编写代码时有关 std::vector 实现的一些假设,这在某种程度上是正确的。该代码最初可以追溯到 2000 年,也许最晚可以追溯到 2002 年。这意味着当时许多 STD 实现在优化容器中对象的销毁和构造方面并没有做得很好。通过使用初始大容量向量可以轻松反驳关于不调整大小的主张。我认为,关于速度的说法完全来自这样一个事实:当存储的对象具有简单的实现时,unbounded_array 有特殊的代码用于消除 dtors 和 ctors。因此,当它必须重新排列事物或复制元素时,它可以避免调用它们。与最近的 STD 实现相比,它不会更快,因为新的 STD 实现往往会利用移动语义等功能来进行更多优化。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)