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