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 件のコメント:
コメントを投稿