vector :: push_back () и vector :: pop_back () в C ++ STL
Векторы такие же, как динамические массивы, с возможностью автоматического изменения размера при вставке или удалении элемента, а их хранение автоматически обрабатывается контейнером.
Функция push_back () используется для вставки элементов в вектор сзади. Новое значение вставляется в вектор в конце, после текущего последнего элемента, и размер контейнера увеличивается на 1.
Синтаксис:
имя_вектора .push_back ( значение ) Параметры: Значение, которое будет добавлено сзади: передается как параметр Результат : Добавляет значение, указанное как параметр к задней части вектора с именем vectorname
Примеры:
Ввод: myvector = {1, 2, 3, 4, 5}; myvector.push_back (6); Выход: 1, 2, 3, 4, 5, 6 Ввод: myvector = {5, 4, 3, 2, 1}; myvector.push_back (0); Выход: 5, 4, 3, 2, 1, 0
Ошибки и исключения
1. Сильная гарантия исключения - если исключение выброшено, в контейнере нет изменений.
2. Если значение, переданное в качестве аргумента, не поддерживается вектором, он показывает неопределенное поведение.
Выход:
1 2 3 4 5 6
Функция pop_back () используется для извлечения или удаления элементов из вектора сзади. Значение удаляется из вектора с конца, а размер контейнера уменьшается на 1.
Синтаксис:
имя вектора .pop_back () Параметры: Параметры не передаются Результат : Удаляет значение, присутствующее в конце или в конце данного вектора с именем vectorname
Примеры:
Ввод: myvector = {1, 2, 3, 4, 5}; myvector.pop_back (); Выход: 1, 2, 3, 4 Ввод: myvector = {5, 4, 3, 2, 1}; myvector.pop_back (); Выход: 5, 4, 3, 2
Ошибки и исключения
1. Гарантия отсутствия броска - если контейнер не пуст, функция никогда не генерирует исключения.
2. Если вектор пуст, он показывает неопределенное поведение.
// CPP program to illustrate // pop_back() function #include <iostream> #include <vector> using namespace std; int main() { vector< int > myvector{ 1, 2, 3, 4, 5 }; myvector.pop_back(); // Vector becomes 1, 2, 3, 4 for ( auto it = myvector.begin(); it != myvector.end(); ++it) cout << ' ' << *it; } |
Выход:
1 2 3 4
Удаляет ли pop_back () значения вместе с элементами?
Когда вызывается функция pop_back (), последний элемент удаляется, значения и элементы в этом случае - одно и то же. Вызывается деструктор сохраненного объекта, и длина вектора удаляется на 1. Если емкость контейнера не уменьшается, вы все равно можете получить доступ к предыдущей ячейке памяти, но в этом случае нет смысла обращаться к уже открытому элемент, так как это приведет к неопределенному поведению .
Приложение push_back () и pop_back ()
Учитывая пустой вектор, добавьте к нему целые числа с помощью функции push_back, а затем вычислите его размер.
Ввод: 1, 2, 3, 4, 5, 6 Выход: 6
Алгоритм
1. Добавьте элементы в вектор с помощью функции push_back.
2. Проверьте, равен ли размер вектора 0, если нет, увеличьте значение счетчика, инициализированного как 0, и вытолкните задний элемент.
3. Повторяйте этот шаг, пока размер вектора не станет равным 0.
4. Выведите окончательное значение переменной.
// CPP program to illustrate // Application of push_back and pop_back function #include <iostream> #include <vector> using namespace std; int main() { int count = 0; vector< int > myvector; myvector.push_back(1); myvector.push_back(2); myvector.push_back(3); myvector.push_back(4); myvector.push_back(5); myvector.push_back(6); while (!myvector.empty()) { count++; myvector.pop_back(); } cout << count; return 0; } |
Выход:
6