什么是stl集的C#等价物?

MrD*_*ase 4 c# data-structures

我想使用C#在平衡二叉搜索树中存储一些值.我查看了泛型命名空间中的集合,但我没有找到stl集的等价物.

我可以使用哪些通用集合?(我不想存储键/值对......只是值.)

Luc*_*tti 14

您可以使用HashSet

HashSet<T>类提供高性能的一组操作.集合是一个不包含重复元素的集合,其元素没有特定的顺序.

HashSet<T>对象的容量是对象可以容纳的元素数.甲HashSet<T>作为元素被添加到对象物体的能力自动增加.


Szy*_*zga 7

  1. 如果您需要排序集,请使用SortedDictionary<T,U>.这是使用二叉搜索树实现的.不可否认,每个条目将使用64位,因为您在下面存储了一个键值对.你可以像这样写一个包装器:

    class Set<T> : SortedDictionary<T, bool>
    {
        public void Add(T item)
        {
            this.Add(item, true);
        }
    }
    
    Run Code Online (Sandbox Code Playgroud)
  2. 如果您不需要排序集,请使用HashSet<T>.

  3. 否则,请查看C5 Generic Collection Library.特别是TreeSet<T>.它是一棵红黑树,只存储值.