比較操作符過載


下表顯示的比較運算子,其目的列表。

函式名 運算子 目的
opCmp < whether before
opCmp <= whether not after
opCmp > whether after
opCmp >= whether not before

比較操作符是用於排序的陣列和一個範例如下所示如何使用比較性研究運算子。

import std.random;
import std.stdio;
import std.string;

struct Box
{
   int volume;

   int opCmp(const ref Box box) const
   {
      return (volume == box.volume  
              ? box.volume - volume: volume - box.volume);
   }

   string toString() const
   {
      return format("Volume:%s
", volume);
   }
}
void main()
{
   Box[] boxes;
   int j= 10;
   foreach (i; 0 .. 10) {
      boxes ~= Box(j*j*j);
      j = j-1;
   }
   writeln("Unsorted Array");
   writeln(boxes);

   boxes.sort;
   writeln("Sorted Array");
   writeln(boxes);
   writeln(boxes[0]<boxes[1]);
   writeln(boxes[0]>boxes[1]);
   writeln(boxes[0]<=boxes[1]);
   writeln(boxes[0]>=boxes[1]);

}

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

Unsorted Array
[Volume:1000
, Volume:729
, Volume:512
, Volume:343
, Volume:216
, Volume:125
, Volume:64
, Volume:27
, Volume:8
, Volume:1
]
Sorted Array
[Volume:1
, Volume:8
, Volume:27
, Volume:64
, Volume:125
, Volume:216
, Volume:343
, Volume:512
, Volume:729
, Volume:1000
]
true
false
true
false