030: pop_back()

pop_back() を定義します。

erase() と似た関数ですが、末尾の要素だけを削除するので、残り要素の移動は発生しません。
普通 pop と言うと削除される要素が戻り値として取得されるのですが、C++ では例外安全の観点から、戻り値は無しです。

template <typename T>
class myvector
{
...

    /**
     * @brief      Removes the last element of the container. Calling pop_back on an
     *             empty container is undefined. No iterators or references except
     *             for back() and end() are invalidated.
     */
    void pop_back(void)
    {
        heap_[size_ - 1].~value_type();
        size_--;
    }

    ...

};
末尾の要素を削除しても要素の移動は起こらないため、実装は極簡単になります。


全ソースコード: https://github.com/suomesta/myvector/tree/master/030

0 件のコメント:

コメントを投稿