6

私は現在、STL がこのように vector pop_back を実装する理由を考えています。最初に終了ポインターの前書きを移動してから、終了ポインターを使用して最後の要素のスペースを解放するのはなぜですか?

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

1 に答える 1

24

ほとんど_M_finishの場合、最後のアイテムの直後のアイテムを指すエンド ポインターです。ポインタが 1 ステップ戻ると、削除される現在の最後の項目を指します。そして、そのアイテムが削除され_M_finishた後も、最後のアイテムの直後のアイテムである同じアイテムを指し続けます。

ここに画像の説明を入力

于 2019-09-02T09:10:25.153 に答える