6

我目前在想为什么STL以这种方式实现vector pop_back。为什么我们先移动结束指针前言,然后使用结束指针释放最后一个元素的空间?

void pop_back() {
    --_M_finish;
    destroy(_M_finish);
}
4

1 回答 1

24

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

在此处输入图像描述

于 2019-09-02T09:10:25.153 回答