2

矩阵类identity_matrixzero_matrix模​​板ALLOC作为第二个参数。但是他们真的分配内存吗?

4

1 回答 1

2

不,他们不分配内存,可以在这里这里看到。我认为文档具有误导性:分配器不用于静态zero_one_元素的初始化,仅用于类型的构造函数T

template<class T, class ALLOC>
const typename zero_matrix<T, ALLOC>::value_type zero_matrix<T, ALLOC>::zero_ = T(/*zero*/);

...
template<class T, class ALLOC>
const typename identity_matrix<T, ALLOC>::value_type identity_matrix<T, ALLOC>::zero_ = T(/*zero*/);
template<class T, class ALLOC>
const typename identity_matrix<T, ALLOC>::value_type identity_matrix<T, ALLOC>::one_ (1); // ISSUE: need 'one'-traits here

但是,typedefsize_typedifference_type是公共接口的一部分,为了保持一致,使用了ALLOC::size_typeand ALLOC::difference_type(而不是“通常”的std::size_tand std::ptrdiff_t)。这是通过以下更改完成的。

于 2017-12-11T06:49:00.543 回答