stack::operator<
Illustre comment utiliser la fonction de bibliothèque de types (STL) Standard de pile : : operator< dans Visual C++.
template<class _TYPE, class _C, class _A>
bool stack::operator<(
const stack<_TYPE, _C, _A>& _X
) const;
Notes
[!REMARQUE]
Les noms de classes/paramètre dans le prototype ne correspondent pas à la version du fichier d'en-tête.certains ont été modifiés pour améliorer la lisibilité.
La fonction de pile : : operator< retourne la valeur true si la pile sur le côté gauche de l'opérateur est moins que la pile du côté droit.
Pour déterminer si une pile est inférieure à une autre pile
Comparez l'élément de bas-plus (tout premier élément fait l'objet d'un push dans la pile).
Si les éléments diffèrent, la pile avec l'élément plus petit est inférieure à la pile avec l'élément supérieur.
Si les éléments sont identiques et il y a plus d'éléments, accédez à l'élément suivant dans la pile et passez en arrière à l'étape 2.
Si tous les éléments des piles sont traités à ce stade, les piles sont égales.
Exemple
// StackLessThan.cpp
// compile with: /EHsc
// Illustrates how to use the stack::operator<
// function to determine if one stack is less than
// another stack.
//
// Functions:
//
// operator< : Returns true if the stack is smaller than the stack
// passed as the operand.
//////////////////////////////////////////////////////////////////////
#pragma warning(disable:4786)
#include <stack>
#include <iostream>
using namespace std ;
typedef stack<double> STACK_DOUBLE;
int main()
{
STACK_DOUBLE stack1,stack2;
// Add item 4.0 to Stack1. Stack1 contains 4.0.
cout << "stack1.push(4.0) s1=[4.0]" << endl;
stack1.push(4.0);
// Add item 3.0 to Stack1. Stack1 contains 3.0(top) and 4.0(bottom).
cout << "stack1.push(3.0) s1=[3.0 4.0]" << endl;
stack1.push(3.0);
// Add item 4.0 to Stack2. Stack2 contains 4.0 (top=bottom).
cout << "stack2.push(4.0) s2=[4.0]" << endl;
stack2.push(4.0);
// Compare if Stack1 is smaller than Stack2. Should return False.
cout << "stack1<stack2 is " <<
((stack1<stack2)? "True": "False") << endl << endl;
// Add item 6.0 to Stack2. Stack2 contains 6.0(top) and 4.0(bottom).
cout << "stack2.push(6.0) s2=[6.0 4.0]" << endl;
stack2.push(6.0);
// Compare if Stack1 is smaller than Stack2. Should return True.
cout << "stack1<stack2 is " <<
((stack1<stack2)? "True": "False") << endl << endl;
// Add item 8.0 to Stack2. Stack2 contains 8.0(top), 6.0 and
// 4.0(bottom).
cout << "stack2.push(8.0) s2=[8.0 6.0 4.0]" << endl;
stack2.push(8.0);
// Compare if Stack1 is smaller than Stack2. Should return True.
cout << "stack1<stack2 is " <<
((stack1<stack2)? "True": "False") << endl << endl;
// Delete item 8.0 from Stack2.
cout << "stack2.pop() s2=[6.0 4.0]" << endl;
stack2.pop();
// Delete item 6.0 from Stack2.
cout << "stack2.pop() s2=[4.0]" << endl;
stack2.pop();
// Add item 3.0 to Stack2. Stack2 contains 3.0(top) and 4.0(bottom).
cout << "stack2.push(3.0) s2=[3.0 4.0]" << endl;
stack2.push(3.0);
// Compare if Stack1 is smaller than Stack2. Should return False.
cout << "stack1<stack2 is " <<
((stack1<stack2)? "True": "False") << endl << endl;
// Delete item 3.0 from Stack2.
cout << "stack2.pop() s2=[4.0]" << endl;
stack2.pop();
// Delete item 4.0 from Stack2.
cout << "stack2.pop() s2=[]" << endl;
stack2.pop();
// Add item 8.0 to Stack2. Stack2 contains 8.0(top=bottom).
cout << "stack2.push(8.0) s2=[8.0]" << endl;
stack2.push(8.0);
// Compare if Stack1 is smaller than Stack2. Should return True.
cout << "stack1<stack2 is " <<
((stack1<stack2)? "True": "False") << endl << endl;
}
Sortie
stack1.push(4.0) s1=[4.0]
stack1.push(3.0) s1=[3.0 4.0]
stack2.push(4.0) s2=[4.0]
stack1<stack2 is False
stack2.push(6.0) s2=[6.0 4.0]
stack1<stack2 is True
stack2.push(8.0) s2=[8.0 6.0 4.0]
stack1<stack2 is True
stack2.pop() s2=[6.0 4.0]
stack2.pop() s2=[4.0]
stack2.push(3.0) s2=[3.0 4.0]
stack1<stack2 is False
stack2.pop() s2=[4.0]
stack2.pop() s2=[]
stack2.push(8.0) s2=[8.0]
stack1<stack2 is True
Configuration requise
en-tête : <stack>