Сообщение BinarySearch со значением поля на входе от 21.03.2025 20:33
Изменено 21.03.2025 20:57 Barbar1an
BinarySearch со значением поля на входе
Есть такой поиск по списку
он отсортирован значит можно бинарным поиском искать
но проблема в том что мы тут ищем по значению поля, а не сам элемент, хотя мы можемзадать компаратор
нам нужно все равно передать элемент для поиска, а его нет, есть только значения поля, и создать его нельзя потому E это шаблонный параметр, у которого нельзя задать X
можно ли разрулить без
ибо такое может может похерить весь бенефит от BinarySearch
List<E> Entries;
return Entries.Find(i => ((EntityId)i.Key).X == id.X);он отсортирован значит можно бинарным поиском искать
но проблема в том что мы тут ищем по значению поля, а не сам элемент, хотя мы можемзадать компаратор
var i = Entries.BinarySearch(сюда наша шото передать, Comparer<E>.Create((x, y) => ((EntityId)x.Key).X.CompareTo(((EntityId)y.Key).X)));
return Entries[i];нам нужно все равно передать элемент для поиска, а его нет, есть только значения поля, и создать его нельзя потому E это шаблонный параметр, у которого нельзя задать X
можно ли разрулить без
Entries.Select(i => ((EntityId)i.Key).X).ToList().BinarySearch...ибо такое может может похерить весь бенефит от BinarySearch
BinarySearch со значением поля на входе
Есть такой поиск по списку
он отсортирован значит можно бинарным поиском искать
но проблема в том что мы тут ищем по значению поля, а не сам элемент, хотя мы можемзадать компаратор
но нам нужно все равно передать элемент для поиска, а его нет, есть только значения поля, и создать его нельзя потому E это шаблонный параметр который нельзя создать
можно ли разрулить без
ибо такое может может похерить весь бенефит от BinarySearch
List<E> Entries;
return Entries.Find(i => ((EntityId)i.Key).A == a);он отсортирован значит можно бинарным поиском искать
но проблема в том что мы тут ищем по значению поля, а не сам элемент, хотя мы можемзадать компаратор
var i = Entries.BinarySearch(сюда наша шото передать, Comparer<E>.Create((x, y) => ((EntityId)x.Key).A.CompareTo(((EntityId)y.Key).A)));
return Entries[i];но нам нужно все равно передать элемент для поиска, а его нет, есть только значения поля, и создать его нельзя потому E это шаблонный параметр который нельзя создать
можно ли разрулить без
Entries.Select(i => ((EntityId)i.Key).A).ToList().BinarySearch...ибо такое может может похерить весь бенефит от BinarySearch