Bibliothèque standard C++<deque>

En C++,<deque>fait partie de la Standard Template Library (STL), fournissant une implémentation d'une file d'attente à double extrémité.

Un deque est une structure de données linéaire qui permet des opérations d'insertion et de suppression aux deux extrémités.

<deque>Son nom complet est « double-ended queue », et en C++ il existe sous la forme d'une classe template, permettant de stocker tout type de données.

<deque>Il s'agit d'un tableau dynamique qui offre des capacités d'accès aléatoire rapides tout en permettant des opérations d'insertion et de suppression efficaces aux deux extrémités. Cela en fait<deque>un choix idéal pour les scénarios qui nécessitent des insertions et des suppressions fréquentes d'éléments.

Syntaxe

En C++, utilisez<deque>Il est nécessaire d'inclure le fichier d'en-tête#include <deque>. Ce qui suit est<deque>Syntaxe de base :

#include <iostream>
#include <deque>

int main() {
    std::deque<int> myDeque; // 创建一个整数类型的双端队列
    // 接下来可以进行插入、删除等操作
    return 0;
}

Opérations courantes

Voici quelques fonctions membres courantes du conteneur std::deque :

Nom de la fonctionDescription de la fonction
deque()le constructeur par défaut pour créer undequeconteneur.
deque(size_type n)Créer un conteneur contenantnéléments avec des valeurs par défautdequeconteneur.
deque(size_type n, const T& value)Créer un conteneur contenantnune valeur estvaluededequeconteneur.
deque(initializer_list<T> il)Utilisation d'une liste d'initialisationilConstructeurdequeconteneur.
operator=opérateur d'affectation pour affecter àdequeconteneur.
assign()Remplacer par une nouvelle valeurdequetous les éléments du conteneur.
at(size_type pos)returnposélément à la position, avec vérification des limites.
operator[](size_type pos)returnposélément à la position, sans vérification des limites.
front()Renvoie une référence au premier élément.
back()Renvoie une référence au dernier élément.
begin()Retourne un itérateur vers le premier élément.
end()Renvoie un itérateur pointant vers la position après le dernier élément.
rbegin()Renvoie un itérateur inverse pointant vers le dernier élément.
rend()Renvoie un itérateur inverse pointant vers la position avant le premier élément.
empty()Vérifie si le conteneur est vide.
size()Renvoie le nombre d'éléments dans le conteneur.
max_size()Renvoie le nombre maximal d'éléments que le conteneur peut contenir.
clear()Supprime tous les éléments du conteneur.
insert(iterator pos, const T& value)DansposInsérer à la positionvalueÉlément.
erase(iterator pos)Removeposélément à la position.
push_back(const T& value)Ajoute à la fin du conteneurvalueÉlément.
pop_back()Supprime l'élément à la fin du conteneur.
push_front(const T& value)Ajoute au début du conteneurvalueÉlément.
pop_front()Supprime l'élément au début du conteneur.
resize(size_type count)Redimensionner le conteneur àcountles parties supplémentaires sont remplies avec des valeurs par défaut.
swap(deque& other)Échanger deuxdequecontenus du conteneur.
get_allocator()Renvoie une copie de l'objet allocateur utilisé pour construire le deque.

Exemple

Voici un exemple utilisant<deque>Un exemple simple, incluant les opérations d'insertion, d'accès et de suppression d'éléments.

Exemple

#include <iostream>
#include <deque>

int main() {
    std::deque<int> myDeque;

    // Insérer des éléments
    myDeque.push_back(10);
    myDeque.push_back(20);
    myDeque.push_front(5);

    // Accéder aux éléments
    std::cout << "Deque contient : ";
    for (int i = 0; i < myDeque.size(); ++i) {
        std::cout << myDeque[i] << " ";
    }
    std::cout << std::endl;

    // Supprimer les éléments
    myDeque.pop_back();
    myDeque.pop_front();

    // Accéder à nouveau aux éléments
    std::cout << "Deque après retrait : ";
    for (int i = 0; i < myDeque.size(); ++i) {
        std::cout << myDeque[i] << " ";
    }
    std::cout << std::endl;

    return 0;
}

Sortie :

Deque contains: 5 10 20 
Deque after popping: 10 

Lorsque la longueur de la deque est inconnue, deque.front() et deque.back() peuvent être utilisées pour accéder aux éléments avant et arrière :

Exemple

#include <iostream>
#include <deque>

int main() {
    std::deque<int> d;

    // Ajouter des éléments à la deque
    d.push_back(10);
    d.push_back(20);
    d.push_front(5);

    // Accéder à l'élément avant
    std::cout << "Élément avant : " << d.front() << std::endl;

    // Accéder à l'élément arrière
    std::cout << "Élément arrière : " << d.back() << std::endl;

    // Modifier l'élément avant
    d.tête() = 15;

    // Modifier l'élément arrière
    d.back() = 25;

    // Accéder à nouveau aux éléments
    std::cout << "Élément avant modifié : " << d.front() << std::endl;
    std::cout << "Élément arrière modifié : " << d.back() << std::endl;

    return 0;
}

La sortie est :

Front element: 5
Back element: 20
Modified front element: 15
Modified back element: 25

Remarque :Avant d'utiliser front() ou back(), assurez-vous que le deque n'est pas vide ; sinon, cela provoquera un comportement indéfini. Si vous devez vérifier si le deque est vide, vous pouvez utiliser la fonction membre empty().

autres extensions