stack::operator<
Ilustra como usar o stack::operator < função de biblioteca STL (Standard Template) no Visual C++.
template<class _TYPE, class _C, class _A>
bool stack::operator<(
const stack<_TYPE, _C, _A>& _X
) const;
Comentários
Observação |
---|
Nomes de classe/parâmetro o protótipo não coincidem com a versão no arquivo de cabeçalho.Alguns foram modificados para melhorar a legibilidade. |
O stack::operator < função retornará verdadeiro se a pilha no lado esquerdo do operador for menor que a pilha no lado direito.
Para determinar se uma pilha é menor do que a outra pilha
Compare o elemento mais inferior (primeiro elemento colocado na pilha).
Se os elementos forem diferentes, a pilha com o menor elemento é menor do que a pilha com o maior elemento.
Se os elementos são os mesmos, e há mais elementos, mover para o próximo elemento da pilha e volte para a etapa 2.
Se todos os elementos nas pilhas forem processados neste momento, as pilhas são iguais.
Exemplo
// 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;
}
Saída
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
Requisitos
Cabeçalho: <stack>