gpt4 book ai didi

c# - List 中使用了哪种算法来动态分配内存?

转载 作者:太空狗 更新时间:2023-10-29 22:04:46 25 4
gpt4 key购买 nike

现在我有了一个在数组上动态分配内存的算法:

  • 如果数组已满,我会创建一个两倍大小的新数组,并复制项目。
  • 如果数组已满四分之一,我会创建一个一半大小的新数组,并复制项目。

尽管将元素复制到新分配的数组会产生额外的开销,但这是一种相当快速的动态内存分配算法。

  1. 什么更快,List<T>还是基于数组的算法?您会推荐使用什么?

  2. List<T>使用简单数组作为内部数据结构?

最佳答案

回答你的问题:

这是真的,C# 的 List<T>实现使用一个内部数组,即

  1. 可序列化
  2. 线程安全
  3. 实现 IEnumerable<T> (这意味着它可以被 LINQ 查询、foreach 编辑等)
  4. 二进制搜索

等等

因此,我会要求您使用 List<T>而不是你自己的列表。

哦,顺便说一句,如果你想要List<T>源代码|来自 Microsoft,然后就在这里

List.cs

编辑

EnsureCapacity的源代码在 List<T>是:

    // Ensures that the capacity of this list is at least the given minimum
// value. If the currect capacity of the list is less than min, the
// capacity is increased to twice the current capacity or to min,
// whichever is larger.
private void EnsureCapacity(int min) {
if (_items.Length < min) {
int newCapacity = _items.Length == 0? _defaultCapacity : _items.Length * 2;
if (newCapacity < min) newCapacity = min;
Capacity = newCapacity;
}
}

关于c# - List<T> 中使用了哪种算法来动态分配内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14913640/

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