Перегрузка операторов сравнения


Предыдущая страница
Следующая страница  

В следующей таблице показан список операторов сравнения и их назначение.

Имя функции Оператор Назначение
opCmp < меньше
opCmp <= не больше
opCmp > больше
opCmp >= не меньше

Операторы сравнения используются при сортировке массивов. В следующем примере показано, как использовать операторы сравнения.

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(" Объём:%s", volume); 
   } 
} 

void main() { 
   Box[] boxes; 
   int j = 10; 
   
   foreach (i; 0 .. 10) { 
      boxes ~= Box(j*j*j); 
      j = j-1; 
   } 
   
   writeln("Несортированный массив"); 
   writeln(boxes);  
   boxes.sort; 
   writeln("Сортированный массив"); 
   writeln(boxes); 
   writeln(boxes[0]<boxes[1]); 
   writeln(boxes[0]>boxes[1]); 
   writeln(boxes[0]<=boxes[1]); 
   writeln(boxes[0]>=boxes[1]); 
}

Когда вы скомпилируете и выполните эту программу, она возвратит следующий результат:

Несортированный массив
[ Объём:1000,  Объём:729,  Объём:512,  Объём:343,  Объём:216,  Объём:125,  Объём:64,  Объём:27,  Объём:8,  Объём:1]
Сортированный массив
[ Объём:1,  Объём:8,  Объём:27,  Объём:64,  Объём:125,  Объём:216,  Объём:343,  Объём:512,  Объём:729,  Объём:1000]
true
false
true
false

Предыдущая страница
Следующая страница