C# 将方法列表与数组进行比较
问题背景: 我现在正在做一个探路者。我的最新实现是能够加载不同的映射文件,而不是只使用一个包含映射的数组。所以在它看起来像这样之前:C# 将方法列表与数组进行比较,c#,priority-queue,icomparer,C#,Priority Queue,Icomparer,问题背景: 我现在正在做一个探路者。我的最新实现是能够加载不同的映射文件,而不是只使用一个包含映射的数组。所以在它看起来像这样之前: Node[] mMatrix; 但是,因为我想在不同的节点段中加载。我做了这个: List<Node[]> 列表 类Node只包含一个声明为F的int 现在开始讨论这个问题 简而言之,具体的问题是如何在IComparer Members compare方法中比较类型为:List的对象 我一直在使用priorityQueue来加速pathfinde
Node[] mMatrix;
但是,因为我想在不同的节点段中加载。我做了这个:
List<Node[]>
列表
类Node只包含一个声明为F的int
现在开始讨论这个问题强>
简而言之,具体的问题是如何在IComparer Members compare方法中比较类型为:Listinternal class ComparePFNodeMatrix : IComparer<int>
{
//Variables Declaration
Node[] mMatrix;
//Constructors
public ComparePFNodeMatrix(Node[] matrix)
{
mMatrix = matrix;
}
//IComparer Members
public int Compare(int a, int b)
{
if (mMatrix[a].F > mMatrix[b].F)
return 1;
else if (mMatrix[a].F < mMatrix[b].F)
return -1;
return 0;
}
}
内部类CompareFNodeMatrix:IComparer
{
//变量声明
节点[]m矩阵;
//建设者
公共比较FNodeMatrix(节点[]矩阵)
{
mMatrix=矩阵;
}
//I比较成员
公共整数比较(整数a、整数b)
{
如果(mMatrix[a].F>mMatrix[b].F)
返回1;
else if(mMatrix[a].F
有人知道如何使用我使用的新数据结构制作比较器吗?
提前谢谢 您说您已经更改了
Node[]mMatrix代码>到列表mMatrix代码>。如果是这样的话
mMatrix[a]
提供的是节点[]
,而不是节点
如果您想访问F
,您必须使用以下内容:
int i = (mMatrix[a])[anotherIndex].F;
编辑1:
如果您使用的是List n1=(List)a
那么您如何仅使用n1.F
访问F
<代码>n1
属于列表
类型,而不是节点
。它尽可能的简单。您可以得到listlist n2=(list)b
并尝试从列表中获取字段F
,n1.F
这n1
是列表,而不是节点要实现IComparer
,您需要一个比较(int,int)
方法,这使得新的比较方法完全无用。你可能需要在不同的层面上进行操作;毕竟,您如何简单地比较两个对象数组列表?这看起来是个相当复杂的问题。好吧!非常感谢你。你对我应该使用什么样的方法有什么建议吗?我当然同意你的看法,这是一个复杂的问题。当然!现在的问题是,如何使Priorityqueue支持一种2D数组?我打赌使用比较方法是不可能的,因为它只有2个参数?