C # и структуры данных, вам когда-нибудь нужно писать свои собственные? - PullRequest
3 голосов
/ 03 июля 2011

Я изучаю книгу алгоритмов, изучаю основные структуры, такие как строки, массивы, словари, очереди, стеки, а также алгоритмы сортировки и т. Д.

Учитывая структуры данных C #, вам когда-нибудь нужно создавать свою собственную структуру с нуля или создавать свой собственный бинарный поиск или что-то еще, или эти вещи встроены для вас?

Ответы [ 4 ]

4 голосов
/ 03 июля 2011

.NET Framework включает только базовую линию общих структур данных и алгоритмов, но не охватывает (и не пытается охватить) все .

Так что да, вы определенно будетенапример, вам нужно написать собственные структуры данных, например, попытки и очереди с приоритетами.Во многих случаях существуют проекты с открытым исходным кодом, которые охватывают широкий спектр алгоритмов и структур данных, поэтому нет необходимости заново изобретать колесо, но, как всегда, для отдельных проектов могут потребоваться более специализированные реализации и различные оптимизации.

2 голосов
/ 03 июля 2011

Как говорит @BrokenGlass, платформа .Net предоставляет множество базовых структур данных. Это ваш основной набор инструментов. Проекты с открытым исходным кодом - отличный способ узнать больше о расширении и расширении этих инструментов. Таким образом, обычно нет необходимости изобретать велосипед .

Чтобы избежать ненужного кодирования собственной структуры данных, всегда полезно спросить: « есть ли библиотека, которая должна соответствовать моим требованиям: x, y, z? »

Тем не менее, я бы не стал отговаривать вас от написания ваших собственных структур данных, поскольку вы видите необходимость - фактически, с академической точки зрения, я поощряю это. Этот опыт даст вам знания, необходимые для:

  1. изменить существующие структуры данных в соответствии с вашими потребностями
  2. знать, когда существующие структуры данных не соответствуют вашим потребностям
0 голосов
/ 03 июля 2011

.NET не хватает многих общих структур данных, которые есть в более полных библиотеках для других языков (таких как стандартная библиотека шаблонов C ++).

Я использовал C5 и Wintellect Power Collections в прошлом.Из двух я предпочитаю C5 для коллекций, но Wintellect для алгоритмов.

0 голосов
/ 03 июля 2011

Ах;) Прочитайте книгу до конца;) Существует множество крайних случаев, которые стандартные классы .NET не охватывают.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...