在vector的fill_init代码中,为什么有 const size_type init_size = mystl::max(static_cast<size_type>(16), n); 的动作呢
Opened this issue · 1 comments
Misng commented
在
// fill_init 函数
template <class T>
void vector<T>::
fill_init(size_type n, const value_type& value)
{
const size_type init_size = mystl::max(static_cast<size_type>(16), n);
init_space(n, init_size);
mystl::uninitialized_fill_n(begin_, n, value);
`}`
中,为什么要有 const size_type init_size = mystl::max(static_cast<size_type>(16), n); 的动作呢
frederick-vs-ja commented
估计是为了减少内存碎片,避免过于小的单次动态分配。
但是我觉得当 n == 0
时应该直接退出并且不进行动态分配。 @Alinshans