用于比较的 C# 版本的 PriorityQueue
C# version of PriorityQueue for compare
我有 Java 的以下代码,并希望在 C# 中实现相同的代码。
请推荐
PriorityQueue<Integer> pQ= new PriorityQueue<Integer>((x,y)->Integer.compare(y, x));
我确实将 Integer 转换为 int 但没有帮助。
.NET 版本 < 6
如果您使用的是 .NET Framework 6(或更新版本),您只需要:
var pQ = new PriorityQueue<int, int>();
如果你添加项目你可以给他们一个优先级(第二个参数):
pQ.Enqueue(1, 100);
pQ.Enqueue(2, 10);
// ...
或者您有想要重用的复杂逻辑,然后使用自定义比较器:
public class MyFancyIntComparer : IComparer<int>
{
public int Compare(int x, int y)
{
// replace following with a fancy logic
return x.CompareTo(y);
}
}
var pQ = new PriorityQueue<int, int>(new MyFancyIntComparer());
如果您使用的是较低版本的 .NET 框架,您可以使用(复制并粘贴)这些内部 PriorityQueues:https://referencesource.microsoft.com/#q=priorityqueue
我有 Java 的以下代码,并希望在 C# 中实现相同的代码。 请推荐
PriorityQueue<Integer> pQ= new PriorityQueue<Integer>((x,y)->Integer.compare(y, x));
我确实将 Integer 转换为 int 但没有帮助。
.NET 版本 < 6
如果您使用的是 .NET Framework 6(或更新版本),您只需要:
var pQ = new PriorityQueue<int, int>();
如果你添加项目你可以给他们一个优先级(第二个参数):
pQ.Enqueue(1, 100);
pQ.Enqueue(2, 10);
// ...
或者您有想要重用的复杂逻辑,然后使用自定义比较器:
public class MyFancyIntComparer : IComparer<int>
{
public int Compare(int x, int y)
{
// replace following with a fancy logic
return x.CompareTo(y);
}
}
var pQ = new PriorityQueue<int, int>(new MyFancyIntComparer());
如果您使用的是较低版本的 .NET 框架,您可以使用(复制并粘贴)这些内部 PriorityQueues:https://referencesource.microsoft.com/#q=priorityqueue