C++11 から追加された関数で、capacityをsizeに合わせて作り直します。
template <typename T>
class myvector
{
...
/**
* @brief Removal of unused capacity.
*/
void shrink_to_fit(void)
{
if (size_ < capacity_) {
if (size_ == 0) {
free(heap_);
heap_ = nullptr;
capacity_ = 0;
}
else {
reallocation(size_, realloc_switcher());
}
}
}
...
};
中身は reallocation() を呼ぶだけです。reallocation() はサイズ 0 に対応していないので、サイズ 0 の場合だけ、専用処理を通します。
全ソースコード: https://github.com/suomesta/myvector/tree/master/024
0 件のコメント:
コメントを投稿