c++ - 如何理解向量pop_back的實現?



vector stl (1)

我目前正在考慮STL為什麼以這種方式實現向量pop_back。 為什麼我們先移動結束指針的序言,然後使用結束指針分配最後一個元素的空間?

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

_M_finish 最有可能是結束指針,即指向最後一個項目之後的項目。 將指針向後移動一步後,它將指向將要刪除的當前最後一項。 在刪除該項目之後, _M_finish 將繼續指向同一項目,現在該項目再次位於最後一個項目之後。





sgi