什么是C#等价的C ++向量?
我正在搜索此功能:
拥有一个连续存储内存的动态数组,对访问与标准数组没有性能损失。
我正在搜索,他们说.NET equivalent to the vector in C++ is the ArrayList
,所以:
ArrayList是否具有连续的内存功能?
答案 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)
首先,远离Arraylist
或Hashtable
。这些类被认为是不赞成的,有利于泛型。它们仍然是用于遗留目的的语言。
现在,您正在寻找的是List<T>
类。请注意,如果T是值类型,您将具有连续内存,但如果T是引用类型则不会,原因显而易见。
答案 3 :(得分:13)
C#有很多引用类型。即使容器连续存储 引用 ,对象本身也可能分散在堆中
答案 4 :(得分:4)
看起来CLR / C#可能会更好地支持Vector&lt;&gt;很快。