024: shrink_to_fit()

shrink_to_fit() を定義します。

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

コメントを投稿