std::vector::pop_back în C++

std::vector C++98

Șterge ultimul element al vectorului; dimensiunea scade cu 1.

Sintaxă
void pop_back();

Ce face std::vector::pop_back

pop_back distruge ultimul element. Nu returnează valoarea ștearsă: dacă ai nevoie de ea, citește-o înainte cu back().

Capacitatea nu se schimbă, deci nu se eliberează memorie. Devin invalide doar iteratorii și referințele la elementul șters și end(); restul rămân valide.

Ce returnează

Nimic (void).

Exemple

Exemplul 1: Anularea ultimei acțiuni

Vectorul folosit ca o stivă: ultimul adăugat este primul scos.

#include <print>
#include <string>
#include <vector>

int main() {
    std::vector<std::string> istoric{"scrie titlu", "adaugă poză", "șterge paragraf"};
    while (!istoric.empty()) {
        std::println("Anulez: {}", istoric.back());
        istoric.pop_back();
    }
    std::println("Rămase: {}", istoric.size());
}

Rezultat

Anulez: șterge paragraf
Anulez: adaugă poză
Anulez: scrie titlu
Rămase: 0

Exemplul 2: Dimensiunea scade, capacitatea rămâne

#include <print>
#include <vector>

int main() {
    std::vector<int> v{1, 2, 3, 4, 5};
    v.pop_back();
    v.pop_back();
    std::println("{} size={} capacity={}", v, v.size(), v.capacity());
}

Rezultat

[1, 2, 3] size=3 capacity=5

Greșeli frecvente

  • Apelezi pop_back() pe un vector gol. Este comportament nedefinit (nu aruncă excepție). Verifică întâi !v.empty().
  • Scrii int x = v.pop_back();. Nu compilează: pop_back returnează void. Citește cu v.back() și apoi șterge.

Comenzi înrudite

  • std::vector::push_back: Adaugă un element la sfârșitul vectorului; vectorul crește cu o poziție.
  • std::vector::front: front() returnează primul element al vectorului, iar back() ultimul.
  • std::vector::erase: Șterge un element sau un interval de elemente din vector și returnează iteratorul elementului de după.
  • std::stack: Stivă (LIFO): adaugi deasupra cu push, citești vârful cu top și îl scoți cu pop.