マトリックス クラスidentity_matrix
とは、2 番目のパラメーターとしてのzero_matrix
テンプレートです。ALLOC
しかし、本当にメモリを割り当てているのでしょうか?
質問する
34 次
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_type
とdifference_type
はパブリック インターフェイスの一部であり、一貫性を保つために(「通常の」との代わりに)ALLOC::size_type
とが使用されます。これは、次の変更で行われました。ALLOC::difference_type
std::size_t
std::ptrdiff_t
于 2017-12-11T06:49:00.543 に答える