具有O(n)迭代,O(1)包含和O(1)的数据结构通过键获得

时间:2011-12-02 12:48:42

标签: c# .net data-structures

我正在寻找能够满足这些条件的数据结构或几种组合:

  1. O(n)迭代(不一定是有序的)
  2. O(1)包含
  3. O(1)获取(按键,为int)
  4. O(1)添加
  5. O(1)删除
  6. 我提出的三个解决方案是这样的,它们都只是.NET中内置集合的使用

    1. 构建我自己的哈希集,将更多的内部存储暴露给外部世界,然后是默认的HashSet<T&gt;在.NET

    2. 使用Dictionary<int, T>,因为迭代不必是有序的,但这是一个非常高性能的应用程序,每次我需要步骤时通过创建枚举器生成垃圾通过收藏担心我。担心垃圾不是我“编造”的,这是一个实时模拟和任何可能触发GC的垃圾,如果可以避免的话,基本上是一个非选择。

    3. 使用Dictionary<int, int>T[]的组合,基本上将键+索引存储到字典中的数组中,并将元素存储在T[]中。 / p>

1 个答案:

答案 0 :(得分:3)

有一个通用KeyedCollection允许对象被int和key索引。密钥必须嵌入值中。

您可以使用for(int i ...)迭代它而不使用IEnumerable。