Информация об изменениях

Сообщение BinarySearch со значением поля на входе от 21.03.2025 20:33

Изменено 21.03.2025 20:57 Barbar1an

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 со значением поля на входе
Есть такой поиск по списку

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