gpt4 book ai didi

c# - 是否有使用 C#'s SortedDictionary when you don' t 关心值的常用样式?

转载 作者:行者123 更新时间:2023-11-30 21:57:56 24 4
gpt4 key购买 nike

我正在使用 SortedDictionary<Key, Value>存储 Key 的排序列表 s,但不关心存储 Value秒。 Key有一组唯一性标准和另一组排序标准(即,GetHashValue()Equals(Object obj) 使用的属性与 CompareTo(Key key) 使用的属性不同)。

我知道它只存储对 Value 的引用,所以内存占用很小。在我的用例中,我永远不需要访问 Value KeyValuePair<Key, Value> 的一部分存储在字典中。

是否有一些约定指定用于 Value 的对象类型?在这些情况下?我目前对 Key 使用相同的对象和 Value , 即类型为 Dictionary<Key, Key>我正在使用 .Add(key, key)添加对象。

同样的问题适用于SortedList<Key, Value> ,但我需要 SortedDictionary<Key, Value> 的插入性能在这种情况下。

最佳答案

如果Value是引用类型,存储它会浪费 4 到 8 个字节,具体取决于进程是 32 位还是 64 位。如果Value是值类型,可能会浪费更多。

如果不需要,可以设置ValueByte .即使结构为空,也不能低于 1 个字节。您可以设置为任何值,可能 0 是一个不错的选择。

理想情况下,如果您只需要一套,就应该使用一套。

有一个 SortedSet<T>在内部使用树的 .NET 4.0+ 中。事实上,SortedDictionary<TKey, TValue>使用 SortedSet<KeyValuePair<TKey, TValue>>内部。

SortedList<TKey, TValue> 的集合对应物是 List<T> , 我猜。您只需要使用二进制搜索并将值插入排序位置。实现 ISet<T>应该很简单。

关于c# - 是否有使用 C#'s SortedDictionary<Key, Value> when you don' t 关心值的常用样式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30387484/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com