如何理解 vector pop_back 的实现?
How to understand vector pop_back implementation?
我目前在想为什么STL会这样实现vector pop_back。
为什么我们先移动结束指针序言,然后使用结束指针释放最后一个元素的space?
void pop_back() {
--_M_finish;
destroy(_M_finish);
}
很可能_M_finish
是结束指针,即指向最后一个项目之后的项目。指针向后移动一步后,它将指向当前要删除的最后一项。删除该项目后 _M_finish
将继续指向同一个项目,现在又是最后一个项目之后的项目。
我目前在想为什么STL会这样实现vector pop_back。 为什么我们先移动结束指针序言,然后使用结束指针释放最后一个元素的space?
void pop_back() {
--_M_finish;
destroy(_M_finish);
}
很可能_M_finish
是结束指针,即指向最后一个项目之后的项目。指针向后移动一步后,它将指向当前要删除的最后一项。删除该项目后 _M_finish
将继续指向同一个项目,现在又是最后一个项目之后的项目。