Код перегружает оператор <
, чтобы разрешить сравнение двух Solution
объектов по их значению y
.
После такой перегрузки оператора
solution1 < solution2
имеет то же значение, что и
solution1.y < solution2.y
Вы можете сделать это и в C #: https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/operator
Я не знаю много C ++, я думаю, что эквивалент vector<double>
вC # должен быть List<double>
(System.Collections.Generic.List).Я не уверен, как C ++ сравнивает два vector<double>
, поэтому давайте просто притворимся, что y
в вашем примере - просто двойное число.Это приведет к следующему коду C #:
struct Solution
{
private double y;
public static bool operator <(Solution a, Solution b)
{
return a.y < b.y;
}
public static bool operator >(Solution a, Solution b)
{
return a.y > b.y;
}
}
(потому что вы не можете определить оператор <
без соответствующего оператора >
)