Valarray和自定义分配器

Ori*_*ent 6 c++ containers stl valarray

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

Man*_*726 -1

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

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

文档中:

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

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