Udostępnij za pośrednictwem


stack::operator<

Ilustruje sposób użycia stack::operator < funkcji biblioteki szablon standardowy (STL) w programie Visual C++.

template<class _TYPE, class _C, class _A>
   bool stack::operator<(
      const stack<_TYPE, _C, _A>& _X
   ) const;

Uwagi

[!UWAGA]

Nazwy klasy/parametr w prototyp nie pasują do wersji w pliku nagłówkowym.Niektóre zostały zmodyfikowane w celu poprawienia czytelności.

Stack::operator < funkcja zwraca wartość true, jeśli stos po lewej stronie operatora jest mniejsza niż stosu po prawej stronie.

Aby określić, czy jeden stos jest mniejsza niż innego stosu

  1. Porównaj element najniżej (pierwszy element wkładany na stos).

  2. Jeśli elementy są różne, stos z mniejszych element jest mniejsza niż stos z większą elementu.

  3. Jeśli elementy są takie same i nie ma więcej elementów, przejść do następnego elementu w stosie i wróć do kroku 2.

  4. Jeśli wszystkie elementy w stosy są przetwarzane na tym etapie, stosy są równe.

Przykład

// 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;
}

Dane wyjściowe

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

Wymagania

Nagłówek: <stack>

Zobacz też

Koncepcje

Standardowy szablon biblioteki próbek