Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

ตัวดำเนินการเชิงสัมพันธ์บน STL Array ใน C++


มีตัวดำเนินการเชิงสัมพันธ์หกตัวสำหรับการเปรียบเทียบตัวถูกดำเนินการประเภทเดียวกัน ได้แก่>, <,==, <=,>=, !=บทความนี้ประกอบด้วยคำอธิบายของตัวดำเนินการเชิงสัมพันธ์เหล่านี้ในอาร์เรย์ STL ใน C++ ตัวดำเนินการหลัก 2 ตัวที่ใช้ในอาร์เรย์ STL คือการเปรียบเทียบความเท่าเทียมกัน (==) และการเปรียบเทียบน้อยกว่า (<) ระหว่างคอนเทนเนอร์อาร์เรย์ 2 รายการ

การเปรียบเทียบความเท่าเทียมกัน (==) เริ่มเปรียบเทียบองค์ประกอบของอาร์เรย์ทั้งสองที่ด้านใดด้านหนึ่ง เริ่มจากองค์ประกอบแรกของทั้งสองอาร์เรย์บน L.H.S และ R.H.S ของตัวดำเนินการ ==การเปรียบเทียบจะหยุดที่ความไม่ตรงกันครั้งแรก

การเปรียบเทียบน้อยกว่า (<) ทำงานในลักษณะพจนานุกรม อัลกอริทึมทำงานเหมือนอัลกอริทึม std::lexicographic_compare การเปรียบเทียบทำงานตามลำดับโดยใช้ตัวดำเนินการ (<) ในลักษณะซึ่งกันและกัน (ตรวจสอบ a

  • a!=b เทียบเท่ากับ !(a==b)
  • a>b เทียบเท่ากับ (b
  • a<=b เทียบเท่ากับ !(b
  • a>=b เทียบเท่ากับ !(a

โอเปอเรเตอร์เหล่านี้โอเวอร์โหลดในอาร์เรย์

หมายเหตุ:อาร์เรย์ STL ทั้งสองชุดบน L.H.S. และร.ศ. ควรมีพารามิเตอร์เหมือนกัน .

ความซับซ้อนของเวลา ของการเปรียบเทียบคือเวลาเชิงเส้นและขึ้นอยู่กับขนาดของอาร์เรย์ O(n)

ค่าที่ส่งคืนจะเป็นจริงหากมีเงื่อนไขเป็นเท็จหรือเป็นเท็จ

ตัวอย่าง

#include <iostream>
#include <stdio.h>
#include <array>
using namespace std;
int main(){
   // declaration of array
   array<int, 5> marks1 = { 10,20,30,40,50 };
   array<int, 5> marks2 = { 100,200,300,400,500 };
   array<int, 5> marks3 = { 10,20,30,40,50 };
   //a>=b is equivalent to !(a<b) as shown
   if (marks1 >= marks2){
       cout << "Marks1 is greater than equal to Marks2\n";
   }
   else{
      cout << "Marks1 is neither greater nor equal to Marks2\n";
   }
   if (!(marks1 < marks2)){
      cout << "Marks1 is greater than equal to Marks2\n";
   }
   else{
      cout << "Marks1 is neither greater nor equal to Marks2\n";
   }
   //a<=b is equivalent to !(a>b) as shown
   if (marks1 <= marks2){
      cout << "Marks1 is less than equal to Marks2\n";
   }
   else{
      cout << "Marks1 is neither less nor equal to Marks2\n";
   }
   if (!(marks1 > marks2)){
       cout << "Marks1 is less than equal to Marks2\n";
   }
   else{
      cout << "Marks1 is neither less nor equal to Marks2\n";
   }
   //a!=b is equivalent to !(a==b) as shown
   if (marks1 != marks3){
      cout << "Marks1 is not equal to Marks2\n";
   }
   else{
      cout << "Marks1 is equal to Marks2\n";
   }
   if (!(marks1 == marks3)){
      cout << "Marks1 is not equal to Marks2\n";
   }
   else{
      cout << "Marks1 is equal to Marks2\n";
   }
   return 0;
}

ผลลัพธ์

Marks1 is neither greater nor equal to Marks2
Marks1 is neither greater nor equal to Marks2
Marks1 is less than equal to Marks2
Marks1 is less than equal to Marks2
Marks1 is equal to Marks2
Marks1 is equal to Marks2