WPF универсальный Windows

  • Бинарная схема принятия решений (моя очень любимая структура данных, хорошая для представления булевых уравнений и решения их. Эффективный для большой партии вещей)
  • "куча" (дерево, где родитель узла всегда поддерживает некоторое отношение к детям узла, например, родитель узла всегда больше, чем каждый из, его - дети (макс. "куча"))
  • Приоритетные Очереди (действительно просто минимальная "куча" и макс. "куча", хорошая для того, чтобы поддержать порядок большого количества элементов там, например, объект с самым высоким значением, как предполагается, удален сначала)
  • Хеш-таблицы, (со всеми видами стратегий поиска, и переполнение блока, обрабатывающее)
  • Сбалансированные деревья двоичного поиска (Каждый из них, имеют их собственные преимущества)
    • RB-деревья (в целом хороший, при вставке, поиск, удалении и итерации заказанным способом)
    • Avl-деревья (быстрее для поиска, чем RB, но в других отношениях очень похожий на RB)
    • Косые деревья (быстрее для поиска, когда недавно используемые узлы, вероятно, будут снова использованы)
    • дерево Fusion (Использование быстрого умножения для получения еще лучших времен поиска)
    • B+Trees (Используемый для индексации в базах данных и файловых системах, очень эффективных, когда задержка к чтению-записи из/в индекс будет значительной).
  • Пространственные индексы (Превосходный для запросов для того, являются ли точки/круги/прямоугольники/строки/кубы в непосредственной близости от или содержавший друг в друге)
    • дерево BSP
    • Дерево квадрантов
    • Дерево октантов
    • дерево Диапазона
    • Партии подобных но немного отличающихся деревьев и различные размеры
  • деревья Интервала (хорошее открытие перекрывающиеся интервалы, линейные)
  • Графики
    • список смежности (в основном список краев)
    • матрица смежности (таблица, представляющая ориентированные ребра графика с единственным битом на край. Очень быстро для обхода графика)
  • Они - те, я могу задуматься о. Существуют еще больше на Википедию приблизительно структуры данных

8
задан PaN1C_Showt1Me 24 August 2009 в 11:48
поделиться

1 ответ

К сожалению, то, что вы хотите, не вполне возможно.

Обновление: До .NET 4.0 (то есть когда этот ответ был изначально написан), Поддержка XAML для использования универсальных типов была очень ограниченной ; например, дженерики работали только с корневым элементом. В .NET 4.0 были сняты некоторые ограничения.

В .NET 4.0 вы можете создать полностью специализированный универсальный тип. Таким образом, хотя сам XAML все еще не имеет понятия универсальных типов, он может относиться к специализациям универсальных типов. (По аналогии, XAML не может выражать понятие List <> , но может выражать понятие List ). Для получения полной информации см. страницу MSDN «Generics in XAML» .

Вы можете создавать экземпляры специализированных универсальных типов с помощью x: TypeArguments Директива . Например, с x , привязанным к пространству имен XAML, sys с пространством имен System и scg с System.Collections. Generic и ваше собственное пространство имен MyWindows, привязанное к my , тогда:

  • создаст MyWindows < строка> экземпляр.
  • создаст List >

Таким образом, использование универсальных типов больше не является проблемой в XAML!

Увы, вы хотите определить универсальный тип в XAML. Это невозможно. Здесь есть два обходных пути. Во-первых (и, основываясь на ваших комментариях по другому вопросу, я думаю, это то, что вы хотите), вы можете просто передать тип как простой параметр. Если вы сделаете это, вы потеряете все функции безопасности времени компиляции, которые предоставляют универсальные шаблоны, но достаточно часто они не актуальны. Во-вторых, вы можете определить обычный неуниверсальный класс с выделенным кодом в XAML и просто использовать универсальный базовый класс для повторного использования кода. Таким образом вы получите хотя бы некоторую надлежащую безопасность и повторное использование дженериков.

4
ответ дан 5 December 2019 в 15:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: