如何理解向量pop_back的实现?

Ede*_*dee 6 c++ stl vector sgi

我目前正在考虑STL为什么以这种方式实现向量pop_back。为什么我们先移动结束指针的序言,然后使用结束指针分配最后一个元素的空间?

void pop_back() {
    --_M_finish;
    destroy(_M_finish);
}
Run Code Online (Sandbox Code Playgroud)

use*_*670 24

最有可能_M_finish是结束指针,即指向最后一个项目之后的项目。将指针向后移动一步后,它将指向将要删除的当前最后一项。在删除该项目之后,_M_finish它将继续指向同一项目,而现在又是最后一项之后的项目。

在此处输入图片说明

  • 直观的插图值得赞扬。 (4认同)