【发布时间】:2019-09-13 10:29:27
【问题描述】:
对不起,如果这是重复的,这里的第一个问题...
我想对大量称为 notes 的结构进行操作。
但我不想对音符的每个元素进行操作。我正在尝试使用 int 数组 (int[]) 的 filter 来跳过其中的很多内容,如下面的代码所示。
Note[] notes = new Note[]
{
// Struct stuff ...
};
int[] filter = new int[]{ 4,20,50,367... };
for (int i = 0; i < notes.Length; i++)
{
bool flag = false;
for (int j = 0; j < filter.Length; j++)
{
if (i == filter[j])
{
flag = true;
break;
}
}
if (flag) continue;
// Do something on notes[i]
}
问题是,当notes 数组和filter 数组都扩展时,代码会运行真的很慢(我认为)。 那么,有没有更好、更快的方法来做到这一点?请注意,过滤器的大小可以是任何基于其他条件的东西
【问题讨论】:
-
错字?你的意思是
if (notes[i] == filter[j])而不是if (i == filter[j])? -
@DmitryBychenko 不是错字,我使用索引来过滤注释[i],但如果它是
if (notes[i] == filter[j]),它不应该导致错误,因为 (struct == int)??
标签: c# arrays performance