C++ <list> функция push_front

C++ класс контейнера <list>


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;
}

Ожидаемый вывод:

原始 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;
    }

    Ожидаемый вывод:

    构建的链表: 1 2 3 4 5
    

    Анализ кода:

    • Каждый разpush_frontОба добавляют новые элементы в начало.
    • Итоговый порядок связного списка: 1 -> 2 -> 3 -> 4 -> 5.

    C++ класс контейнера <list>

    Другие расширения