Valarray和自定义分配器

时间:2014-06-22 12:53:44

标签: c++ stl containers valarray

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

1 个答案:

答案 0 :(得分:0)

  

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

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

来自the documentation

  

std :: valarray和helper类被定义为没有特定的   别名形式,从而允许对这些类进行操作   优化类似于C中关键字restrict的效果   编程语言。此外,功能和运营商采取   允许valarray参数返回代理对象来实现它   编译器可以优化表达式,避免任何临时或多次传递。

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