c#等价于c++的vector,具有连续内存
C# equivalent of C++ vector, with contiguous memory?
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#有很多引用类型。即使容器连续存储引用,对象本身也可能分散在堆中
首先,远离Arraylist
或Hashtable
。这些类应该被认为是不推荐的,而应该使用泛型。出于遗留目的,它们仍然存在于语言中。
现在,您正在寻找的是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相关文章:
- 当需要超过16GB的连续内存时,内存分配失败
- C++,您能否设计一种数据结构,将指针保存在连续内存中并且不会使它们失效?
- 使用连续内存实现多态性
- 我可以使用哪种数据结构来释放连续内存中的内存?
- std::array与C样式数组用于连续内存
- 如何创建非 POD 类型的连续内存池?
- C++ 中连续内存中的模板化不同大小的结构
- 连续内存分配
- std::vector 如何支持未知大小的自定义对象的连续内存
- 持续的时间访问是否在某个时候意味着连续内存
- std::vector 的连续内存分配
- C++连续内存操作
- 是否可以将指向已知大小的连续内存的指针转换为结构
- 确定将范围中的元素放置在连续内存中
- 未键入的连续内存容器
- 分配大块连续内存 - 做还是不做?
- 为什么数组中的指针不存储在连续内存中
- C++ 向量不分配连续内存
- std::bitset 是否保证连续内存以及结构中的恒定大小(以避免填充?
- 使用单个连续内存块为三维数组编制索引