Fonction push_back de <list> en C++

Classe conteneur C++ <list>


Parmi les nombreux conteneurs,list(Liste doublement chaînée) est une structure de données avec insertion et suppression efficaces, etpush_backest la fonction clé pour ajouter des éléments à la fin de la liste chaînée.

push_backest une fonction membre utilisée pourla liste chaînée (list)definAjouter un nouvel élément.

push_backimplémente une liste chaînéeà croissance dynamique, vous n'avez pas besoin de spécifier à l'avance la taille finale du conteneur, et pouvez ajouter des éléments à tout moment et n'importe où selon les besoins pendant l'exécution du programme.

Définitions de mots: push, c'est pousser,backsignifie « l'arrière », donc ensemble cela signifie « pousser vers l'arrière », ce qui est très imagé.


Syntaxe de base et paramètres

push_backest une fonction membre des classes conteneurs, donc vous devez d'abord avoir un objet conteneur, puis utiliser l'opérateur point.pour l'appeler.

Format de syntaxe

void push_back(const T& value);
void push_back(T&& value);  // C++11 之后(支持右值)

Description des paramètres

  • Paramètre: value
    • Type : cohérent avec le type d'élément spécifié lors de la définition du conteneur, ou une valeur pouvant être convertie en ce type.
    • Description : la valeur que vous souhaitez ajouter à la fin du conteneur. Elle peut être une variable, un littéral (tel que10, "hello"), ou le résultat d'une expression.

Description de la fonction

  • Valeur de retour: void(aucune valeur de retour). Son but est purement « d'ajouter un élément » ; une fois l'ajout terminé, la fonction se termine.
  • Effet: du conteneursize()(nombre actuel d'éléments) augmentera de 1. Le nouvel élément devient le dernier élément de la liste chaînée.

Exemple

Maîtrisons-le parfaitement à travers une série d'exemples, du simple au complexe :push_backUtilisation.

Exemple 1 : Utilisation de base - gestion des entiers

Exemple

#include <iostream>
#include <list> // 1. Il faut inclure le fichier d'en-tête list

int main() {
    // 2. Créer une liste vide pour stocker des entiers
    std::list<int> numbers;

    std::cout << "Au départ, la taille de la liste est : " << numbers.size() << std::endl;

    // 3. Utiliser push_back pour ajouter des éléments
    numbers.push_back(10); // Ajouter l'entier 10 à la fin
    numbers.push_back(20); // Ajouter 20 après 10
    numbers.push_back(30); // Ajouter 30 après 20

    std::cout << "Après l'ajout, la taille de la liste est : " << numbers.size() << std::endl;

    // 4. Parcourir et afficher tous les éléments
    std::cout << "Les éléments de la liste sont : ";
    for(int n : numbers) {
        std::cout << n << " ";
    }
    std::cout << std::endl;

    return 0;
}

Sortie attendue :

初始时,list的大小是: 0
添加后,list的大小是: 3
list中的元素是: 10 20 30

Analyse du code :

  1. #include <list>est d'utiliserlistLe principe d'un conteneur.
  2. std::list<int> numbers;Créé un nomménumbersdu videlist, qui stockera plus tardintdes entiers de type.
  3. trois foispush_backappel, séquentiellement10, 20, 30ajouter ànumbersfin. L'ordre d'ajout est celui des éléments danslistl'ordre final dans
  4. numbers.size()Renvoie le nombre actuel d'éléments.

Exemple 2 : Gestion des chaînes

listIl peut stocker non seulement des nombres, mais aussi des chaînes, des types personnalisés et tout autre type de données.

Exemple

#include <iostream>
#include <list>
#include <string>

int main() {
    // Créer une liste qui stocke std::string
    std::list<std::string> tasks;

    // Utiliser push_back pour ajouter des tâches à faire
    tasks.push_back("Apprendre la liste C++");
    tasks.push_back("Faire les devoirs");
    tasks.push_back("Lire la documentation technique");

    std::cout << "Tâches à faire aujourd'hui (" << tasks.size() << " tâches) :" << std::endl;
    for(const auto& task : tasks) {
        std::cout << "- " << task << std::endl;
    }

    return 0;
}

Sortie attendue :

今日待办事项 (3 项):
- 学习 C++ list
- 写作业
- 阅读技术文档

Analyse du code :

  • std::list<std::string>déclare le type d'élément commestd::stringcontainer.
  • push_backLe paramètre est un littéral de chaîne.

Exemple 3 : Utilisation avec push_front

push_backetpush_frontpeuvent être utilisés ensemble pour construire une liste chaînée.

Exemple

#include <iostream>
#include <list>

int main() {
    std::list<int> data;

    // D'abord, ajouter en tête
    data.push_front(30);
    data.push_front(20);
    data.push_front(10);

    // Ensuite, ajouter en queue
    data.push_back(40);
    data.push_back(50);

    std::cout << "Éléments : ";
    for(int n : data) {
        std::cout << n << " ";
    }
    std::cout << std::endl;

    return 0;
}

Sortie attendue :

元素: 10 20 30 40 50

Analyse du code :

  • Première utilisationpush_frontAjoutez 10, 20, 30 en tête
  • Ensuite, utilisezpush_backAjoutez 40, 50 en queue
  • L'ordre final est 10 -> 20 -> 30 -> 40 -> 50

Classe conteneur C++ <list>

autres extensions