使用 std::valarray 被认为是好的做法吗?

计算科学 C++
2021-12-19 08:39:16

std::valarrayC++从 C++98 标准开始就有这个类。它旨在促进数值计算,提供人们对实现向量空间的数学概念的类所期望的操作类型(有一些小的奇怪之处,如operator==,它返回布尔向量而不是单个bool)。

然而,我没有看到该类被广泛使用,无论是作为独立的还是作为更复杂的向量实现的基础。社区对这门课有什么看法?我们作为一个社区有什么经验,无论是积极的还是消极的?

1个回答

我只能给你我个人的印象和意见。我的印象是,很多人觉得这个类有些多余,因为从功能上讲,它并没有给你带来太多的东西vector它实现的算法将具有相同的渐近复杂度,尽管原则上可以进行优化,因为它将模板参数的类型限制为特定的数值类型。

当您重视自然语法时,我确实如此,但许多 C++ 开发人员似乎认为次要重要性,我认为valarray该类具有重要的优势。在 Python 中编程时,我大量使用 NumPy,从语法上讲,这个类比我喜欢valarray的更接近 NumPy 数组vector(内置完整的逐点操作、切片等)。

我看到的主要缺点正是它很少使用。例如,我在 GCC 中的实现中遇到了一个错误,我在3 年前报告了该错误,但直到它被确认也花了 2 年多的时间。