c#等价于c++的vector,具有连续内存

C# equivalent of C++ vector, with contiguous memory?

本文关键字:连续 内存 vector 等价于 c++      更新时间:2023-10-16

c++ vector的c#等效是什么?

我正在搜索这个功能:

具有连续存储内存的动态数组,与标准数组相比,访问时没有性能损失。

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

是否ArrayList具有连续内存特性?

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

的例子:

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

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

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

首先,远离ArraylistHashtable。这些类应该被认为是不推荐的,而应该使用泛型。出于遗留目的,它们仍然存在于语言中。

现在,您正在寻找的是List<T>类。请注意,如果T是值类型,您将拥有连续内存,但如果T是引用类型,则没有,原因很明显。

看起来CLR/c#可能很快就会得到对Vector<>的更好支持。

http://blogs.msdn.com/b/dotnet/archive/2014/04/07/the-jit-finally-proposed-jit-and-simd-are-getting-married.aspx