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 fonction | Description 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 <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 <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