C#相当于C ++vector,具有连续内存?
C ++相当于C ++vector的是什么?
我正在寻找这个function:
要有一个连续存储的内存dynamic数组,没有访问与标准数组的性能损失。
我正在search,他们说.NET equivalent to the vector in C++ is the ArrayList
,所以:
ArrayList是否具有连续的内存function?
你可以使用List<T>
,当T
是一个值types时,它将被分配在连续的内存中,如果T
是一个引用types,情况就不会如此。
例:
List<int> integers = new List<int>(); integers.Add(1); integers.Add(4); integers.Add(7); int someElement = integers[1];
使用List<T>
。 在内部它使用数组和数组确实使用连续的内存。
C#有很多引用types。 即使一个容器连续地存储了引用 ,这些对象本身也可能散布在堆中
首先,远离Arraylist
或Hashtable
。 这些类别将被视为不赞成使用generics。 它们仍然是为了传统目的而使用的语言。
现在,你要找的是List<T>
类。 请注意,如果T是一个值types,您将具有连续内存,但是,如果T是引用types,则不会显而易见。
看起来像CLR / C#可能会很快得到更好的支持Vector <>。