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_backreturneazăvoid. Citește cuv.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.