C++ 벡터와 동일한 C#은 무엇입니까?연속적인 메모리가있는 C++ 벡터에 해당하는?
나는이 기능을 찾고 있어요 :
표준 배열 대 액세스 성능 저하가없는 연속 저장 메모리의 동적 배열을 가지고.
그래서, 내가 검색 한 그들은 .NET equivalent to the vector in C++ is the ArrayList
말 :
마 ArrayList에 그 연속 메모리 기능이?
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>
. 내부적으로 배열을 사용하고 배열은 인접한 메모리를 사용합니다.
+1. 왜 사람들은'ArrayList'에 대해서도 언급하고 있습니까? –
사실 전적으로 사실입니다. T가 참조 유형이면 연속 메모리가 없습니다. –
@Matteo 소스를 보면 백엔드 저장소, 참조 유형에 사용되는'private T [] _items;가 있습니다. –
C#에는 많은 참조 유형이 있습니다. 심지어 참조가 인접, 객체 자체가 힙 모든
먼저 흩어져 수있는 용기를 저장하는 경우, Arraylist
또는 Hashtable
멀리. 이러한 클래스는 제네릭을 위해 비추천으로 간주해야합니다. 그들은 여전히 유산 목적을위한 언어로되어 있습니다.
자, 찾고있는 것은 List<T>
클래스입니다. T가 값 유형이면 contiguos 메모리를 갖지만 T가 참조 유형 인 경우가 아니라는 점에 유의해야합니다.
CLR/C#이 곧 Vector <을 더 잘 지원할 것으로 보입니다.
당신이 (심지어 지속적으로 기대 나) 구조가 메모리에 할당하는 방법을 지정하기 위해 금속에 충분히 가까이 CLR 아닌가? – Aphex