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 <>에 대한 더 나은 지원이 제공 될 것 같습니다.