我正在尝试将C ++代码转换为C#,而这部分代码有些令人困惑。我想知道是否有人帮助我了解它的功能,以及它在c#中的等效功能。
struct Solution
{
std::vector<double> y;
bool operator<(const Solution& rhs) const
{
if (y < rhs.y)
return true;
return false;
};
}
答案 0 :(得分:1)
代码重载了<
运算符,以允许通过其Solution
值比较两个y
对象。
以这种方式重载运算符后
solution1 < solution2
的含义与
solution1.y < solution2.y
您也可以在C#中执行此操作:https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/operator
我不太了解C ++,我认为C#中的vector<double>
等效项应该是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;
}
}
(因为您无法在没有匹配的<
运算符的情况下定义>
运算符)