【问题标题】:C# and datastructures, do you ever need to write your own?C# 和数据结构,您是否需要自己编写?
【发布时间】:2011-07-03 16:02:25
【问题描述】:

我正在阅读一本算法书,阅读基本结构,如字符串、数组、字典、队列、堆栈,以及排序算法等。

鉴于 C# 的数据结构,您是否需要从头开始构建自己的结构,或者创建自己的二进制搜索或为您内置的任何东西或这些东西?

【问题讨论】:

  • 即使你从来没有自己构建过,你仍然需要阅读那本书才能知道何时使用哪本书。

标签: c# data-structures


【解决方案1】:

.NET 框架仅包含通用数据结构和算法的基线,但并未涵盖(也未尝试涵盖)所有内容

所以是的,您肯定必须编写自己的数据结构、尝试和优先级队列,例如马上就会浮现在脑海中。在许多情况下,有些开源项目涵盖了广泛的算法和数据结构,因此无需重新发明轮子,但与往常一样,个别项目可能需要更专业的实现和不同的优化。

【讨论】:

  • 当然,有一些库可以做到这一点,因此您可能不必自己编写它们。
  • @svick:刚刚在你留下评论时写下 - 非常真实。
【解决方案2】:

正如@BrokenGlass 所说,.Net 框架提供了许多基线数据结构。这是您的基本工具箱。开源项目是了解更多关于扩展和扩展这些工具的好方法。因此,通常没有必要重新发明轮子

为了避免对自己的数据结构进行不必要的编码,最好问一下,“是否有一些库可以满足我的要求:x、y、z?

也就是说,我不会阻止您根据需要编写自己的数据结构 - 事实上,从学术角度来看,我鼓励这样做。这段经历将为您提供以下所需的知识:

  1. 修改现有数据结构以满足您的需求
  2. 了解现有数据结构何时不能满足您的需求

【讨论】:

    【解决方案3】:

    .NET 缺少许多通用数据结构,这些数据结构在其他语言的更全面的库中(例如 C++ 标准模板库)。

    我过去使用过C5 和Wintellect 的Power Collections。在这两者中,我更喜欢 C5 用于集合,但 Wintellect 用于算法。

    【讨论】:

      【解决方案4】:

      啊;) 把书读到最后 ;) .NET 标准类没有涵盖很多边缘情况。

      【讨论】:

        猜你喜欢
        • 2013-11-05
        • 2021-08-03
        • 2017-07-15
        • 2014-01-29
        • 2013-06-11
        • 2014-12-12
        • 1970-01-01
        • 2019-11-21
        相关资源
        最近更新 更多