C#等价的C ++向量,具有连续的内存?

时间:2011-08-04 14:28:21

标签: c# c++ vector

什么是C#等价的C ++向量?

我正在搜索此功能:

拥有一个连续存储内存的动态数组,对访问与标准数组没有性能损失。

我正在搜索,他们说.NET equivalent to the vector in C++ is the ArrayList,所以:

ArrayList是否具有连续的内存功能?

5 个答案:

答案 0 :(得分:85)

您可以使用List<T>,当T是值类型时,它将在连续内存中分配,如果T是引用类型,则不会出现这种情况。

示例:

List<int> integers = new List<int>();
integers.Add(1);
integers.Add(4);
integers.Add(7);

int someElement = integers[1];

答案 1 :(得分:15)

使用List<T>。在内部它使用数组,并且数组确实使用连续的内存。

答案 2 :(得分:15)

首先,远离ArraylistHashtable。这些类被认为是不赞成的,有利于泛型。它们仍然是用于遗留目的的语言。

现在,您正在寻找的是List<T>类。请注意,如果T是值类型,您将具有连续内存,但如果T是引用类型则不会,原因显而易见。

答案 3 :(得分:13)

C#有很多引用类型。即使容器连续存储 引用 ,对象本身也可能分散在堆中

答案 4 :(得分:4)