为什么std::valarray
不支持自定义分配器?它的内存管理是如何设计的?是否使用了new
基于或malloc
基于的分配器?所有其他容器通常提供指定自定义分配器的可能性。说,std::vector
有libstdc++
相应的模板参数Allocator
,我可以指定__gnu_cxx::__mt_alloc
为分配器。
问问题
395 次
1 回答
0
为什么 std::valarray 不支持自定义分配器?
因为std::valarray
不是动态数组(Like std::vector
)。它是一种用于数值计算的优化向量版本,旨在依赖 SIMD 和类似的优化。
从文档中:
std::valarray 和辅助类被定义为没有某些形式的别名,因此允许对这些类的操作进行优化,类似于 C 编程语言中关键字限制的效果。此外,允许使用 valarray 参数的函数和运算符返回代理对象,以使编译器可以优化表达式 [...] 避免任何临时或多次传递。
如您所见,它不是一个简单的动态数组。它是一个动态数组,旨在通过许多优化来保存数值并对其进行矢量化计算。
于 2014-06-22T13:02:31.513 回答