Удаление элементов: pop_back()
Противоположность push_back() — метод pop_back(): он удаляет последний элемент вектора. В круглых скобках ничего писать не нужно, но сами скобки обязательны.
std::vector<std::string> colors = {"синий", "зелёный", "розовый"};
colors.pop_back();
std::cout << colors.size() << std::endl;
std::cout << colors[colors.size() - 1] << std::endl;Программа выведет:
2
зелёныйЭлемента "розовый" больше нет, и последний элемент теперь "зелёный".
Метод pop_back() только удаляет элемент и ничего не возвращает. Если удалённый элемент вам нужен, прочитайте его до удаления:
std::vector<std::string> colors = {"синий", "зелёный", "розовый"};
std::string lastColor = colors[colors.size() - 1];
colors.pop_back();
std::cout << "Удалён: " << lastColor << std::endl;
std::cout << "Осталось: " << colors.size() << std::endl;Программа выведет:
Удалён: розовый
Осталось: 2Если попробовать сохранить результат pop_back() в переменной, std::string lastColor = colors.pop_back();, программа не скомпилируется:
main.cpp:7:17: error: no viable conversion from 'void' to 'std::string' (aka 'basic_string<char>')В сообщении сказано, что void нельзя преобразовать в std::string. void означает «ничего»: pop_back() не возвращает никакого значения, так что сохранять в переменную нечего. Слово void вам ещё встретится в уроке о функциях.
Никогда не удаляйте ничего из пустого вектора. Удалять нечего, и программа может повести себя непредсказуемо, как и при индексе за пределами вектора.
Задание
- 1
Проект Евы закончен, и она уходит из команды. Сохраните последнего коллегу в переменной
leavingColleagueтипаstd::string(индекс вычислите с помощьюsize() - 1). Затем удалите её из вектораcolleaguesс помощьюpop_back(). - 2
Выведите, кто уходит и сколько коллег остаётся, одно под другим. В выводе должны быть строки
Уходит: ЕваиОстаётся: 3.