Fonction C ++ Deque

Fonction C ++ Deque
La bibliothèque de modèles standard (STL) fournit également une classe appelée «Deque» qui implémente toutes les fonctionnalités de cette structure de données. Un conteneur séquentiel qui fonctionne comme une structure de données de file d'attente à double extrémité en C ++ est appelé le STL Deque.

Des éléments sont souvent ajoutés à l'arrière et retirés de l'avant dans une file d'attente normale. En revanche, nous pouvons ajouter et retirer les composants de l'avant et de l'arrière d'un désublication. La mise en œuvre d'un deque en C ++ peut être effectuée à l'aide d'un tableau ou d'une liste liée.

Vous trouverez ci-dessous une liste de l'implémentation du tableau de Deque. Nous avons utilisé les tableaux circulaires pour l'implémenter car il s'agit d'une file d'attente à double extrémité. La file d'attente à double extrémité est plus rapide et plus efficace que toute autre file d'attente lorsqu'il s'agit d'ajouter et de retirer les composants des deux extrémités.

Représentation de Deque

Les aspects longs de la réalisation de divers processus de déshabillement comprennent:

  • Obtenir des éléments: O (1)
  • Ajout d'élément ou délétion- o (n)
  • Ajout ou suppression des composants au début de la fin O (1)

Types de Deque

Voyons les types liés à Deque en C++.

Entrée Deque restreinte

L'entrée est confinée à une extrémité mais autorisée aux deux autres.

Deque de sortie de sortie

Dans ce deque, la sortie est interdite à une extrémité, mais l'insertion est autorisée aux deux extrémités.

Création de la fonction de deque C ++

Nous devons d'abord inclure le fichier d'en-tête DEQU++.

#inclure

Après l'importation de ce fichier, la syntaxe suivante peut être utilisée pour générer un désactivation:

# Deque deque-nom;

Le type de données que nous aimerions stocker dans le Deque est indiqué par un type objet dans ce cas. Par exemple: int, flotteur, chaîne, etc. Deque-name est un nom de variable pour les données que nous allons utiliser.

Initialisation de la fonction Deque

En C ++, la fonction de Deque peut être initialisée de la manière suivante:

se débarrasser arr = 1, 3, 7, 0, 5, 8;
se débarrasser arr 1, 3, 7, 0, 5, 8;

Ces deux méthodes sont utilisées pour initialiser Deque. Dans ces deux noms de désactivation, «arr» est initialisé avec des valeurs entières 1, 3, 7, 0, 5, 8.

Méthodes de désactivation

Voici les méthodes de désactivation:

  • Insérer(): Ajoute un nouvel élément et rend un itérateur avec le premier des éléments nouvellement ajoutés comme point.
  • Rbegin (): Génère un itérateur inversé pointant vers la dernière valeur du Deque.
  • Déchirer(): Génère un itérateur inversé avec une position initiale avant l'origine du Deque.
  • Cbegin (): Renvoie un itérateur constant qui pointe toujours vers le premier élément du conteneur; En conséquence, l'itérateur ne peut être utilisé que pour traverser le deque et ne pas être modifié.
  • Taille max(): Le nombre d'éléments qu'un conteneur de deque peut contenir est renvoyé par cette fonction.
  • Attribuer(): Utilisé pour attribuer des valeurs à un conteneur Deque qui est le même ou différent.
  • Redimensit (): Fonction utilisée pour modifier la taille du deque.
  • Repousser(): À l'aide de cette fonction, des composants peuvent être ajoutés de l'arrière dans un désactive.
  • Devant(): Il est utilisé pour se référer à l'élément initial du conteneur de la deque.
  • Dos(): Il est utilisé pour se référer au dernier élément du conteneur de queue.
  • Clair(): Il est utilisé pour effacer tous les éléments de Deque en réduisant sa taille à 0.
  • Effacer(): Utilisé pour supprimer les objets d'un conteneur d'un certain point ou plage.
  • Deque :: vide (): Il est utilisé pour déterminer si le deque est vide.
  • Opérateur =: Utilisé pour allouer de nouvelles données au conteneur et échanger les anciens.
  • Opérateur[]: Utilisé pour se référer à l'élément de l'opérateur à l'endroit spécifié.
  • À(): Utilisé pour se référer au composant présent à l'emplacement spécifié comme paramètre de la fonction.
  • Échanger(): Cette fonction est utilisée pour échanger les Deques du même type de données.
  • Commencer(): Il est utilisé pour fournir un itérateur pointant vers l'objet initial du conteneur de la queue.
  • EMPLAY_FRONT (): Un nouvel élément est inséré dans le conteneur de quele en utilisant cette fonction. Le début du Deque est modifié pour inclure le composant supplémentaire.
  • EMPlace_back (): Utilisé pour ajouter une nouvelle valeur au conteneur Deque. Le nouveau composant est inclus à la toute fin du Deque.

Déquez-structure des données

Vérifions les détails de la structure des données Deque dans la section suivante:

Procédures sur un désactivation

Ces étapes doivent être suivies avant d'effectuer les opérations suivantes:

Étape 1: Prenez un tableau N dimensionnel (Deque). En première position, placez deux pointeurs et réglez avant = -1 et arrière = 0.

Configurez un tableau et des pointeurs Deque.

Insertion à l'avant

Étape 1: Cette action ajoute un composant devant. Vérifiez l'emplacement du front.

Si l'avant est inférieur à 5, réinitialisez l'avant à N-1 (dernier index).

Étape 2: Réduisez l'avant par 1 si nécessaire. Maintenant, ajoutez la nouvelle clé N au tableau [Front]. Supposons que n = 6.

Insertion à l'arrière

Étape 1: Cette action ajoute un composant au rare. Assurez-vous que le tableau n'est pas plein.

Étape 2: Si la file d'attente est pleine, réinitialisez la valeur arrière à 0 (r = 0). Sinon, augmentez le rare par 1.

Étape 3: Dans un tableau [arrière], ajoutez la nouvelle clé 6.

Retirer de l'avant

Étape 1: Un élément à l'avant est supprimé pendant le processus. Assurez-vous que le deque n'est pas vide.

Étape 2: La suppression n'est pas possible si le deque est vide (avant = -1) (condition de sous-écoulement). Réglez l'avant = -1 uniquement et l'arrière = -1 si le deque se compose d'un élément tel que avant = arrière. Attribuez la valeur à l'avant (avant = 0) si l'avant est à la fin (avant = n - 1). Sinon, réglez l'avant à l'avant = avant + 1.

Retirer de l'arrière

Étape 1: Un élément à la fin est supprimé pendant le processus. Assurez-vous que le deque n'est pas vide.

Étape 2: La suppression n'est pas possible si le deque est vide (avant = -1) (condition de sous-écoulement). Réglez l'avant = -1 et l'arrière = -1 si le deque n'a qu'un seul élément (avant = arrière). Sinon, procédez avec les étapes suivantes. Passons vers l'avant, arrière = n - 1 Si l'arrière est à l'avant (arrière = 0). Sinon, définissez le rare = rare-1.

Exemple 1: Création de Deque

Dans cet exemple, nous créons un deque. Nous incluons d'abord nos fichiers d'en-tête «#include» et #include où #include commande le préprocesseur pour inclure le fichier d'en-tête iOStream et Deque qui contient toutes les fonctions du programme.

#inclure
#inclure
Utilisation de Namespace Std;
void display_deque (deque);
int main()
Deque Mydeque 4, 2, 7, 5, 8;
couter << "mydeque values are = ";
pour (int var: myDeque)
couter << var << ", ";

retour 0;

Après cela, nous décrivons une fonction d'affichage _Deque utilisée pour exécuter les valeurs de deque que nous lui attribuons.

En passant dans notre fonction principale, le int Main () indique que notre fonction doit renvoyer une valeur entière à la fin de l'exécution, ce que nous faisons en renvoyant 0 à la conclusion du programme en utilisant une initialisation uniforme «Deque Mydeque 4, 2, 7 , 5,8 ". Dans ce «int» est le type de valeurs de données que nous avons attribué et MyDeque est le nom que nous avons utilisé pour notre désuté. Nous avons attribué les valeurs entières au deque nommé MyDeque qui sont 4, 2, 7, 5, 8. Pour afficher notre désuté, nous avons utilisé la boucle pour une taille fixe. Et puis, nous avons appuyé sur le bouton Exécuter ou F7 pour obtenir la sortie du programme.

Exemple 2: ajoutant plus de valeurs à un désactive

Dans cet exemple, nous ajoutons plus de valeurs à un désactive. Après avoir ajouté les fichiers d'en-tête requis pour ce programme, nous passons à notre fonction principale du type de données entier «Deque var 0, 1, 2». Dans ce «int» est le type de valeurs de données que nous avons attribué et «var» est le nom que nous avons utilisé pour notre désuté. Nous attribuons les valeurs entières au deque nommé «var» qui sont 0, 1 et 2. Ensuite, nous poussons deux éléments, l'élément 8 à l'avant de la deque et de l'élément 5 à la fin du deque, en utilisant les fonctions push_front () et push_back () du deque. Ainsi, le deque résultant que nous avons est 8, 0, 1 et 5.

#inclure
#inclure
Utilisation de Namespace Std;
int main()
deque var 0, 1, 2;
couter << "Initial Deque values are: ";
pour (const int & var: var)
couter << var << ", ";

var.push_back (5);
var.push_front (8);
couter << "\nFinal Deque values are: ";
pour (const int & var: var)
couter << var << ", ";

retour 0;

Une fois que nous avons terminé le codage de cet exemple, nous le compilons et l'exécutons dans n'importe quel compilateur. Le résultat représente la sortie attendue du code précédent.

Exemple 3: Mise à jour des éléments à des index spécifiés

Dans cet exemple, nous mettons à jour les valeurs dans un désactive après avoir inclus nos fichiers d'en-tête «#include» et «#include» pour ce code exécutable.

#inclure
#inclure
Utilisation de Namespace Std;
int main()
deque var = 1, 2;
couter << "Initial Deque values are: ";
pour (const int & var: var)
couter << var << ", ";

var.à (0) = 3;
var.à (1) = 4;
couter << "\nUpdated Deque values are: ";
pour (const int & var: var)
couter << var << ", ";

retour 0;

Maintenant, nous allons vers notre fonction principale dans laquelle nous avons d'abord initialisé notre désublicité nommé «var» avec les valeurs 1 et 2. Ensuite, nous utilisons une boucle pour afficher les valeurs de notre déque initialisé. Pour mettre à jour les valeurs de deque, nous utilisons la fonction AT () (comme nous le savons, la fonction AT () est utilisée pour se référer à la position spécifiée dans le DEQI) à l'index 0 et 1, attribuant de nouvelles valeurs à «var». Ce sont 3 et 4. Ensuite, notre déshumation mise à jour est de 3 et 4. Après avoir préparé notre code, nous le compilons à l'aide de n'importe quel outil de compilateur. Voici la sortie souhaitée de notre code:

Exemple 4: Utilisation d'Iterator pour supprimer les valeurs

Dans cet exemple, nous utilisons les itérateurs pour accéder aux éléments de la deque. Un objet qui pointe vers un élément à l'intérieur d'un conteneur est appelé un itérateur.

#inclure
#inclure
Utilisation de Namespace Std;
int main()
deque var 0, 3, 5, 8;
deque :: iterator var_iter;
var_iter = var.commencer();
int first_element = * var_iter;
couter << "var[0] = " << first_element << endl;
var_iter = var.begin () + 1;
int element_index1 = * var_iter;
couter << "var[1] = " << element_index1 << endl;
var_iter = var.end () - 1;
int last_element = * var_iter;
couter << "var[2] = " << last_element;
retour 0;

Deque peut être itéré à la fois vers l'avant et vers l'arrière en utilisant le deque :: cbegin et deque :: cend, et de deux manières en utilisant le deque :: crbegin et deque :: Crend.

Initialement, nous avons créé un itérateur qui peut pointer vers un désuté des entiers nommés «var». Ensuite, nous avons indiqué les éléments suivants en utilisant l'itérateur «var_inter». L'itérateur que la méthode commence () renvoie des points au premier élément. Le «début () + 1» génère un itérateur en utilisant l'index de l'élément 1 comme point de départ. Comme vous pouvez le voir, nous utilisons le var.end () - 1 plutôt que le var.fin().

En effet. Pour obtenir le dernier élément, nous déduisons 1. Nous utilisons l'opérateur d'indirection * pour obtenir la valeur d'un élément après avoir utilisé l'inter_var pour le pointer.

Opérations de Deque

Les opérations fondamentales qui peuvent être effectuées sur Deque sont les suivantes:

  • Inserter est généralement utilisé pour ajouter ou insérer quelque chose à l'avant du deque.
  • Insérer ou ajouter quelque chose à la fin de la deque en utilisant le insérer commande.
  • deletefront est utilisé pour supprimer l'élément du front de la file d'attente en le supprimant.
  • Supprimer la finale En cela, l'article doit être supprimé ou déplacé vers la fin de la file d'attente.
  • Obtenez le premier élément dans le Deque en utilisant le getfront méthode.
  • Obtenez le dernier élément de la file d'attente en utilisant le getlast méthode.
  • est vide est utilisé pour vérifier si le deque est nul.
  • est rempli est utilisé pour déterminer si le deque est plein.

Conclusion

Deque est la meilleure option car elle est plus rapide et aide le code à s'exécuter plus rapidement. Le Deque fonctionne mieux pour les séquences de journal. Cet article est basé sur la mise en œuvre de Deque et ses principales méthodes, qui nous aident à modifier le deque en fonction de nos besoins. Nous visons à expliquer le deque et ses méthodes ainsi qu'avec des exemples de comment utiliser le deque et quand l'utiliser. L'outil que nous avons utilisé pour implémenter le code est le compilateur C ++. Nous avons fait un effort sincère pour rendre ce tutoriel aussi simple et aussi compréhensible que possible pour vous.