C++ <list> функция push_front
push_frontиспользуется в list, чтобыдобавить элемент в начало связного спискаЭта функция — одна из характерных операций связного списка.
push_frontявляется функцией-членом, используемой длясвязного списка (list)иззаголовкадобавить новый элемент.
В отличие от vector,listВременная сложность вставки элемента в начало — O(1), что очень эффективно.
Определения слов: push— это проталкивание,frontЭто означает "front"; вместе это означает "push to the front", что очень наглядно.
Базовый синтаксис и параметры
push_frontЭто функция-член класса контейнера, и для её вызова не требуются аргументы.
Формат синтаксиса
void push_front(const T& value); void push_front(T&& value); // C++11 之后(支持右值)
Описание параметра
- Параметр:
value- Тип: совпадает с типом элемента, указанным при определении контейнера.
- Описание: значение, которое вы хотите добавить в начало контейнера.
Описание функции
- Возвращаемое значение:
void(нет возвращаемого значения). - Влияниена контейнер
size()Он увеличится на 1. Новый элемент становится первым элементом связного списка.
Пример
Давайте тщательно освоим это на примерах.push_frontИспользование.
Пример 1: базовое использование — добавление элемента в начало.
Пример
#include <iostream>
#include <list>
int main() {
std::list<int> numbers = {20, 30, 40};
std::cout << "исходный список: ";
for(int n : numbers) std::cout << n << " ";
std::cout << std::endl;
// Добавить элемент в начало
numbers.push_front(10);
std::cout << После push_front(10):;
for(int n : numbers) std::cout << n << " ";
std::cout << std::endl;
return 0;
}
#include <list>
int main() {
std::list<int> numbers = {20, 30, 40};
std::cout << "исходный список: ";
for(int n : numbers) std::cout << n << " ";
std::cout << std::endl;
// Добавить элемент в начало
numbers.push_front(10);
std::cout << После push_front(10):;
for(int n : numbers) std::cout << n << " ";
std::cout << std::endl;
return 0;
}
Ожидаемый вывод:
原始 list: 20 30 40 push_front(10) 后: 10 20 30 40
Анализ кода:
push_front(10)Добавить 10 в начало связного списка, сделав его первым элементом.Пример 2: создание связного списка
Использованиеpush_frontУдобно строить связный список с головы.
Пример
#include <iostream>
#include <list>
int main() {
std::list<int> data;
// Добавлять в начало последовательно; итоговый порядок противоположен порядку вставки.
data.push_front(5);
data.push_front(4);
data.push_front(3);
data.push_front(2);
data.push_front(1);
std::cout << Созданный связный список:;
for(int n : data) std::cout << n << " ";
std::cout << std::endl;
return 0;
}
#include <list>
int main() {
std::list<int> data;
// Добавлять в начало последовательно; итоговый порядок противоположен порядку вставки.
data.push_front(5);
data.push_front(4);
data.push_front(3);
data.push_front(2);
data.push_front(1);
std::cout << Созданный связный список:;
for(int n : data) std::cout << n << " ";
std::cout << std::endl;
return 0;
}
Ожидаемый вывод:
构建的链表: 1 2 3 4 5
Анализ кода:
- Каждый раз
push_frontОба добавляют новые элементы в начало. - Итоговый порядок связного списка: 1 -> 2 -> 3 -> 4 -> 5.
Другие расширения