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