gpt4 book ai didi

C++11:我应该使用 valarray 还是向量进行数值计算

转载 作者:行者123 更新时间:2023-12-02 19:38:42 25 4
gpt4 key购买 nike

向量与valarray的问题已经被问过here 。我的问题特指 C++11 的情况。我一直在读"A Tour of C++""The C++ Programming Language" 。这两本书都是由 Bjarne Stroustrup 撰写的。在第一本书中,作者解释说 std::valarray 应该是数值计算的首选(第 12 章)。但在第二本书的第 29 章中,作者用 std::vector 实现了一个 Matrix 类。

还可以做一些googling ,从性能角度来看,std::vector 似乎与动态分配的“原始数组”一样快。

那么在C++11的背景下,数值计算应该首选哪个容器?<​​/p>

我对此的看法是,由于 std::vector 使用 operator[] 提供对其内容的快速访问(它返回对数据的引用,而没有边界检查),并且使用 std::vector 比动态分配的数组更安全,因此应该首选 std::vector。另外,从 C++11 开始:

  • std::vector 使用 std::vector::data() 提供对底层数据的直接访问
  • 可以使用 std::vector::shrink_to_fit() 调整 std::vector 的大小,以使用更少的内存

最佳答案

valarray 有很好的 functionality ,您可以轻松地按元素应用数学函数,并且具有更好的切片能力。您可以例如做v3 = sin(v2 + v1*3)

尽管如此,如果您确实想做科学计算,请考虑使用诸如 Eigen 之类的库。

关于C++11:我应该使用 valarray 还是向量进行数值计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43582305/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com