C ++中STL数组上的关系运算符

有六个关系运算符用于比较相同类型的操作数。这些是>,<,==,<=,> =,!=。本文包含C ++中STL数组上这些关系运算符的说明。STL数组中使用的主要两个运算符是两个数组容器之间的相等比较(==)和小于比较(<)。

相等(==)比较开始在任一侧比较两个数组的元素。从==运算符的LHS和RHS上两个数组的第一个元素开始,比较在第一个不匹配处停止。

小于(<)比较以词典方式工作。该算法的工作方式类似于std::lexicographic_compare算法。比较使用互斥的运算符(<)依次进行(检查a <b和b <a都)。词典使用字典顺序对从第一个字母到最后一个字母的单词进行字母排序。其他运算符使用==和<,如下所示-

  • a!= b等于!(a == b)

  • a> b等于(b <a)

  • a <= b等于!(b <a)

  • a> = b等于!(a <b)

这些运算符在<header>数组中被重载。

注意:LHS和RHS上的两个STL数组都应具有相同的参数<Type,Length>。

比较的时间复杂度是线性时间,并且取决于数组的大小。上)

如果条件成立,则返回值为true,否则为false。

示例

#include <iostream>
#include <stdio.h>
#include <array>
using namespace std;
int main(){
   //数组声明
   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等效于!(a == b),如图所示
   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