比較操作符重載
下表顯示的比較運算符,其目的列表。
函數名 | 運算符 | 目的 |
---|---|---|
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