6

为什么std::valarray不支持自定义分配器?它的内存管理是如何设计的?是否使用了new基于或malloc基于的分配器?所有其他容器通常提供指定自定义分配器的可能性。说,std::vectorlibstdc++相应的模板参数Allocator,我可以指定__gnu_cxx::__mt_alloc为分配器。

4

1 回答 1

0

为什么 std::valarray 不支持自定义分配器?

因为std::valarray不是动态数组(Like std::vector)。它是一种用于数值计算的优化向量版本,旨在依赖 SIMD 和类似的优化。

文档中

std::valarray 和辅助类被定义为没有某些形式的别名,因此允许对这些类的操作进行优化,类似于 C 编程语言中关键字限制的效果。此外,允许使用 valarray 参数的函数和运算符返回代理对象,以使编译器可以优化表达式 [...] 避免任何临时或多次传递。

如您所见,它不是一个简单的动态数组。它是一个动态数组,旨在通过许多优化来保存数值并对其进行矢量化计算。

于 2014-06-22T13:02:31.513 回答