vector vs valarray 的问题已经在这里被问过了。我的问题专门针对 C++11 的情况。我一直在阅读“C++ 之旅”和“C++ 编程语言”。这两本书均由 Bjarne Stroustrup 撰写。在第一本书中,作者解释说它std::valarray
应该是数值计算的首选(第 12 章)。但是在第二本书的第 29 章中,作者根据std::vector
.
同样通过进行一些谷歌搜索,似乎在性能方面, astd::vector
与动态分配的“原始数组”一样快。
那么在 C++11 的上下文中,数值计算应该首选哪个容器呢?
我对此的看法是,由于使用( 它返回对数据的引用而不进行边界检查)std::vector
提供对其内容的快速访问,并且在动态分配的数组上使用 a 也更安全,因此应该首选。此外,从 C++11 开始:operator[]
std::vector
std::vector
std::vector
使用提供对基础数据的直接访问std::vector::data()
- std::vector 可以调整大小以使用更少的内存
std::vector::shrink_to_fit()