Size: a a a

Сообщество разработчиков на Universal Windows Platform

2020 September 08

OS

Oleg Samoylov in Сообщество разработчиков на Universal Windows Platform
регион блюда наследник переопределяет
источник

B

Boris in Сообщество разработчиков на Universal Windows Platform
источник

OS

Oleg Samoylov in Сообщество разработчиков на Universal Windows Platform
источник

OS

Oleg Samoylov in Сообщество разработчиков на Universal Windows Platform
источник

ДА

Дмитрий Адодин... in Сообщество разработчиков на Universal Windows Platform
Как обычно
источник

MC

Max Cat in Сообщество разработчиков на Universal Windows Platform
@ad1Dima мы недавно разговаривали про сравнение строк.
Есть большой массив пар (несколько тысяч значений) строка-значение, строки могут повторяться. Есть идеи максимально быстро найти все пары строка-значение с нужной строкой?

Сейчас я разбиваю этот большой массив на словари согласно длине строк, и записываю эти словари в другой массив так чтобы индекс равнялся длине строки. Словари эти Dictionary<string, List<value>>
источник

MC

Max Cat in Сообщество разработчиков на Universal Windows Platform
т.е мы максимально быстро находим строки со схожей длиной. А вот идентичную строку мы находим как влюч словаря возможно с немаксимальной скоростью
источник

B

Boris in Сообщество разработчиков на Universal Windows Platform
Dictionary? Ты хотел сказать Hashset или как его?
источник

MC

Max Cat in Сообщество разработчиков на Universal Windows Platform
Boris
Dictionary? Ты хотел сказать Hashset или как его?
точно не хешсет
источник

YS

Yury Schkatula in Сообщество разработчиков на Universal Windows Platform
для сравнения длинных строк точно нужен хэш, превращающий здоровенные N символов в фикс с размером, например, 4 байта
источник

YS

Yury Schkatula in Сообщество разработчиков на Universal Windows Platform
проблема - неуникальность хэша, возможны коллизии, зависящие от нашей хэш-функции, поэтому хэш как ключ мапится на список значений, где уже проверяем посимвольно равенство
источник

YS

Yury Schkatula in Сообщество разработчиков на Universal Windows Platform
насколько знаю, быстрее такой идеи в общем случае ничего нет
источник

MC

Max Cat in Сообщество разработчиков на Universal Windows Platform
Yury Schkatula
проблема - неуникальность хэша, возможны коллизии, зависящие от нашей хэш-функции, поэтому хэш как ключ мапится на список значений, где уже проверяем посимвольно равенство
Так словарь так внутри ж и делает? Разве нет?
источник

MC

Max Cat in Сообщество разработчиков на Universal Windows Platform
Если б он так не делал, то это было б общеизвестной проблемой
источник

MC

Max Cat in Сообщество разработчиков на Universal Windows Platform
Ещё интересует как сравнивать строки прям очбыстро. == даёт оверхед, потому что ещё раз сравнивает строки по ссылке, длину и на нулл
источник

MC

Max Cat in Сообщество разработчиков на Universal Windows Platform
И наверное внутри словаря используется ==
источник

YS

Yury Schkatula in Сообщество разработчиков на Universal Windows Platform
насколько помню, обычные словари строят дерево, а вот хэш-словари - да, хэш-таблица
источник

YS

Yury Schkatula in Сообщество разработчиков на Universal Windows Platform
дерево опирается на операцию сравнения, определённую для типа-ключа
источник

YS

Yury Schkatula in Сообщество разработчиков на Universal Windows Platform
равно - попали, меньше - в одно поддерево, больше - в другое
источник

YS

Yury Schkatula in Сообщество разработчиков на Universal Windows Platform
но опять же, там хватает нюансов какое именно дерево будет использоваться
источник