std::valarray
C++从 C++98 标准开始就有这个类。它旨在促进数值计算,提供人们对实现向量空间的数学概念的类所期望的操作类型(有一些小的奇怪之处,如operator==
,它返回布尔向量而不是单个bool
)。
然而,我没有看到该类被广泛使用,无论是作为独立的还是作为更复杂的向量实现的基础。社区对这门课有什么看法?我们作为一个社区有什么经验,无论是积极的还是消极的?
std::valarray
C++从 C++98 标准开始就有这个类。它旨在促进数值计算,提供人们对实现向量空间的数学概念的类所期望的操作类型(有一些小的奇怪之处,如operator==
,它返回布尔向量而不是单个bool
)。
然而,我没有看到该类被广泛使用,无论是作为独立的还是作为更复杂的向量实现的基础。社区对这门课有什么看法?我们作为一个社区有什么经验,无论是积极的还是消极的?
我只能给你我个人的印象和意见。我的印象是,很多人觉得这个类有些多余,因为从功能上讲,它并没有给你带来太多的东西vector
。它实现的算法将具有相同的渐近复杂度,尽管原则上可以进行优化,因为它将模板参数的类型限制为特定的数值类型。
当您重视自然语法时,我确实如此,但许多 C++ 开发人员似乎认为次要重要性,我认为valarray
该类具有重要的优势。在 Python 中编程时,我大量使用 NumPy,从语法上讲,这个类比我喜欢valarray
的更接近 NumPy 数组vector
(内置完整的逐点操作、切片等)。
我看到的主要缺点正是它很少使用。例如,我在 GCC 中的实现中遇到了一个错误,我在3 年前报告了该错误,但直到它被确认也花了 2 年多的时间。