연속 메모리가있는 C ++ 벡터에 해당하는 C #? C ++ 벡터에 해당하는 C

C ++ 벡터에 해당하는 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>. 내부적으로 그것은 배열을 사용하고 배열은 연속적인 메모리를 사용합니다.


답변

우선 Arraylist또는 에서 멀리 떨어져 있습니다 Hashtable. 이러한 클래스는 제네릭을 위해 사용되지 않는 것으로 간주됩니다. 레거시 목적을 위해 여전히 언어로되어 있습니다.

자, 당신이 찾고있는 것은 List<T>수업입니다. T가 값 유형이면 연속적인 메모리를 갖게되지만 T가 참조 유형 인 경우에는 분명한 이유가 없습니다.


답변

C #에는 많은 참조 유형이 있습니다. 컨테이너가 참조를 연속적으로 저장하더라도 객체 자체가 힙을 통해 흩어질 수 있습니다.


답변

곧 CLR / C #에서 Vector <>에 대한 더 나은 지원이 제공 될 것 같습니다.

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


답변