Odebrání prvku: pop_back()
Opakem push_back() je metoda pop_back() (anglicky „odebrat zezadu“): odebere z vektoru poslední prvek. Do závorek nic nepíšete, závorky ale napsat musíte.
std::vector<std::string> barvy = {"modrá", "zelená", "růžová"};
barvy.pop_back();
std::cout << barvy.size() << std::endl;
std::cout << barvy[barvy.size() - 1] << std::endl;Program vypíše:
2
zelenáPrvek "růžová" zmizel a posledním prvkem je teď "zelená".
Metoda pop_back() prvek jen odebere, nic vám nedá. Když odebraný prvek potřebujete, přečtěte si ho dřív, než ho odeberete:
std::vector<std::string> barvy = {"modrá", "zelená", "růžová"};
std::string posledniBarva = barvy[barvy.size() - 1];
barvy.pop_back();
std::cout << "Odebráno: " << posledniBarva << std::endl;
std::cout << "Zbývá: " << barvy.size() << std::endl;Program vypíše:
Odebráno: růžová
Zbývá: 2Když se pokusíte uložit výsledek pop_back() do proměnné, std::string posledniBarva = barvy.pop_back();, program nepůjde přeložit:
main.cpp:7:17: error: no viable conversion from 'void' to 'std::string' (aka 'basic_string<char>')Hláška říká, že void nejde převést na std::string. void znamená „nic“: pop_back() žádnou hodnotu nedává, a tak není co uložit do proměnné. Se slovem void se znovu setkáte v lekci o funkcích.
Z prázdného vektoru nic neodebírejte. Odebrat není co a program se pak může chovat nepředvídatelně, stejně jako při indexu mimo vektor.
Jak psát:
Pokyny
Evin projekt skončil a Eva z týmu odchází. Uložte posledního spolupracovníka do proměnné typu std::string s názvem odchazejici (index spočítejte pomocí size() - 1). Potom ho z vektoru spolupracovnici odeberte pomocí pop_back().
Pod sebe vypište, kdo odchází a kolik spolupracovníků zbývá. Ve výpisu by se měly objevit řádky Odchází: Eva a Zbývá: 3.
Začněte programovat zdarma
7/10