English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

C++ Introduction aux tutos

C++ Contrôle de flux

C++ Fonction

C++ Tableau & Chaîne

C++ Structure de données

C++ Classe & Objet

C++ Pointeurs

C++ Héritage

C++ STL tutoriel

C++ Manuel de référence

C++ Stack(pile)

Dans le domaine des sciences informatiques, nous nous efforçons de développer divers programmes. Chacun d'eux a son propre domaine et utilité. Selon l'objectif de création du programme et l'environnement, nous avons une grande variété de structures de données disponibles. L'une d'elles est "pile". Avant de discuter de ce type de données, regardons sa grammaire.

Grammaire

template<class T, class Container = deque<T> > class stack;

Cette structure de données utilise la technologie LIFO, où LIFO signifie dernier entré, premier sorti. L'élément inséré en premier est extrait à la fin, et ainsi de suite. Il y a un élément appelé "top", qui est l'élément situé en haut de la pile. Toutes les opérations d'insertion et de suppression sont effectuées sur l'élément en haut de la pile lui-même.

La pile implicite dans l'application est un adaptateur de conteneur.

Le conteneur doit soutenir la liste des opérations suivantes :

  • empty

  • size

  • back

  • push_back

  • pop_back

Paramètres de template

T:Le paramètre spécifie le type d'élément que le conteneur adaptateur conservera.

Container:Le paramètre spécifie l'objet interne du conteneur utilisé pour contenir les éléments de la pile.

Types membres

Voici la liste des types membres de la pile, avec une brève description.

Type membreDescription
value_typeIl spécifie le type de l'élément.
container_typeIl spécifie le type de conteneur de base.
size_typeIl spécifie la gamme de taille de l'élément.

Fonction

Grâce aux fonctions, on peut utiliser des objets ou des variables dans le domaine de la programmation. La pile fournit un grand nombre de fonctions qui peuvent être utilisées ou intégrées dans un programme. La liste suivante est identique :

FonctionDescription
(constructeur)Cette fonction est utilisée pour construire le conteneur de pile.
emptyCette fonction est utilisée pour tester si la pile est vide. Si la pile est vide, cette fonction retourne true, sinon retourne false.
sizeCette fonction retourne la taille du conteneur de pile, qui est une mesure du nombre d'éléments stockés dans la pile.
topCette fonction est utilisée pour accéder à l'élément en haut de la pile. Cet élément joue un rôle très important, car toutes les opérations d'insertion et de suppression sont exécutées sur l'élément en haut.
pushCette fonction est utilisée pour insérer un nouvel élément au sommet de la pile.
popCette fonction est utilisée pour supprimer des éléments, les éléments de la pile étant supprimés du sommet.
emplaceCette fonction est utilisée pour insérer un nouvel élément dans la pile située au-dessus de l'élément en haut de la pile actuelle.
swapCette fonction est utilisée pour échanger le contenu des deux conteneurs de référence.
opérateurs relationnelsLes fonctions non membres spécifient les opérateurs relationnels nécessaires pour la pile.
uses allocator<stack>Comme son nom l'indique, la fonction non membre utilise l'allocateur pour la pile.

Exemple : Un programme simple illustrant l'utilisation des fonctions de base de pile.

#include <iostream>
#include <stack>
using namespace std;
void newstack(stack<int> ss)
{
	stack<int> sg = ss;
	while (!sg.empty())
	{
		cout << '\t' << sg.top();
		sg.pop();
	}
	cout << '\n';
}
int main ()
{
	stack<int> newst;
	newst.push(55);
	newst.push(44);
	newst.push(33);
	newst.push(22);
	newst.push(11);
	cout << "Le dernier pile est : ";
	newstack(newst);
	cout << "\n newst.size() : " << newst.size();
	cout << "\n newst.top() : " << newst.top();
	cout << "\n newst.pop() : ";
	newst.pop();
	newstack(newst); 
	return 0;
}

Sortie :

Le dernier tas est : 	11	22	33	44	55
 newst.size() : 5
 newst.top() : 11
 newst.pop() : 	22	33	44	55