C++ Stack::operator< 函式



C++ 函式std::stack::operator<是一個二元運算子,用於檢查第一個棧是否小於另一個棧。

此函式不接受任何引數,如果第一個棧小於另一個棧,則返回布林值 true,否則返回 false。

為類定義 operator< 函式時,務必確保它對類中的物件提供嚴格的弱排序。這意味著該函式必須滿足三個屬性:自反性(一個物件不大於自身),反對稱性(如果 A < B 則 !(B < A)),以及傳遞性(如果 A < B 且 B < C,則 A < C)。

二元運算符采用兩個運算元來執行特定的操作,例如加法、減法、乘法、除法或比較。它由符號或關鍵字表示,例如 +、-、*、/ 和 !=。

語法

以下是 std::stack::operator< 的語法:

bool stack1 < stack2

引數

  • stack1 - 第一個棧。
  • stack2 - 第二個棧。

返回值

如果第一個棧小於第二個棧,則返回 true,否則返回 false。

示例 1

以下示例演示瞭如何透過比較兩個大小相同的棧來使用 std::stack::operator< 函式。

首先,我們建立兩個棧 's1' 和 's2',並將元素 '1 - 5' 插入到兩個棧中。然後,我們使用 operator< 函式對它們進行比較。

#include <iostream>
#include <stack>
using namespace std;

int main(void) {
   stack<int> s1;
   stack<int> s2;
   for (int i = 0; i < 5; ++i) {
      s1.push(i + 1);
      s2.push(i + 1);
   }
   if (s1 < s2){
      cout << "Stack s1 is less than s2." << endl;}
   else {
      cout << "Stack s1 is not less than s2." << endl;
   }
   return 0;
}

輸出

讓我們編譯並執行上述程式,這將產生以下結果:

Stack s1 is not less than s2.

示例 2

在這裡,我們建立兩個棧 's1' 和 's2',然後使用 operator< 函式根據它們的頂部元素對它們進行比較。

#include <iostream>
#include <stack>
using namespace std;

int main(void) {
   stack<int> s1;
   s1.push(1);
   s1.push(2);
   s1.push(3);

   stack<int> s2;
   s2.push(1);
   s2.push(5);

   if (s1.top() < s2.top()) {
      cout << "s1 is smaller than s2\n";
   } else {
      cout << "s1 is not smaller than s2\n";
   }
}

輸出

如果我們執行上述程式碼,它將生成以下輸出:

s1 is smaller than s2

示例 3

在以下示例中,我們定義了一個函式 'getMinElement',它接受一個整數棧的引用作為輸入,並使用另一個棧返回棧中的最小元素。然後,我們在主函式中建立一個整數棧 's',並將三個值壓入其中,並呼叫 'getMinElement' 函式獲取 's' 中的最小元素。

#include <iostream>
#include <stack>
using namespace std;

int getMinElement(stack<int>& s) {
   stack<int> minStack;
   while (!s.empty()) {
      int current = s.top();
      s.pop();
      if (minStack.empty() || current < minStack.top()) {
         minStack.push(current);
      } else {
         minStack.push(minStack.top());
      }
   }
   int minElement = minStack.top();
   while (!minStack.empty()) {
      minStack.pop();
   }
   return minElement;
}
int main() {
   stack<int> s;
   // populate s
   s.push(48);
   s.push(2);
   s.push(103);
   // get minimum element in s using another stack
   int minElement = getMinElement(s);
   cout << "Minimum element in s is " << minElement << endl;
   return 0;
}

輸出

以下是上述程式碼的輸出:

Minimum element in s is 2
廣告