为什么std::valarray
不支持自定义分配器?如何设计其内存管理?是否使用基于new
或基于malloc
的分配器?
所有其他容器通常提供指定自定义分配器的可能性。比如,std::vector
中的libstdc++
具有相应的模板参数Allocator
,我可以将__gnu_cxx::__mt_alloc
指定为分配器。
答案 0 :(得分:0)
为什么std :: valarray不支持自定义分配器?
因为std::valarray
不是动态数组(如std::vector
)。它是一种用于数值计算的矢量优化版本,旨在依赖SIMD和类似的优化。
std :: valarray和helper类被定义为没有特定的 别名形式,从而允许对这些类进行操作 优化类似于C中关键字restrict的效果 编程语言。此外,功能和运营商采取 允许valarray参数返回代理对象来实现它 编译器可以优化表达式,避免任何临时或多次传递。
如您所见,它不是一个简单的动态数组。它是一个动态数组,用于保存数值并通过许多优化对它们进行矢量化计算。