Alinshans/MyTinySTL

在vector的fill_init代码中,为什么有 const size_type init_size = mystl::max(static_cast<size_type>(16), n); 的动作呢

Opened this issue · 1 comments

// 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); 的动作呢

估计是为了减少内存碎片,避免过于小的单次动态分配。

但是我觉得当 n == 0 时应该直接退出并且不进行动态分配。 @Alinshans