2022. 5. 27. 15:39ㆍC#/자료구조
이 포스팅은 눈코딩님의 유튜브 영상을 보고 정리한 글입니다.
배열
데이터 구조에 형식이 동일한 변수를 여러 개 저장할 수 있다.
ex)
int[] scores = new int[3];
배열 요소 형식은 배열 형식을 비롯한 어떤 형식도 될 수 있다.
숫자 배열 요소의 기본값은 0으로 설정된다.
참조 요소는 null로 설정된다.
배열 형식은 추상 기본 형식에서 파생된 참조 형식이기 때문에,
가변 배열의 기본 값은 null로 설정된다.
ex)
string[] names = new string[3];
names[0] == null;
names[1] == null;
names[2] == null;
차원 수와 각 차원의 길이는 배열 인스턴스를 만들 때 설정되고,
이렇게 설정된 값은 인스턴스의 수명 동안 변경할 수 없다.
배열 요소는 인덱싱 된다.
n 개의 요소를 가진 배열은 0부터 n - 1로 인덱싱 된다.
배열은 단일 차원, 다차원 또는 가변일 수 있다.
다차원 배열(2차원)
가변 배열
가변 배열은 여러 배열로 구성되어 있기 때문에
해당 요소가 참조 형식이며, null로 초기화된다.
동적 배열
필요 시 배열의 크기를 확장하거나 축소하는 기능을 갖는 배열
http://www.csharpstudy.com/DS/dynamic-array.aspx
동적배열 (D-Array) - C# 프로그래밍 배우기 (Learn C# Programming)
자료구조 : 동적 배열 (Dynamic Array) 배열은 고정된 크기의 연속된 배열요소들의 집합이므로 배열을 초기화 할 때 총 배열 요소의 수를 미리 지정해야 한다. 하지만 경우에 따라 배열요소가 몇 개
www.csharpstudy.com
.NET 에는 동적배열을 지원하는 클래스로 ArrayList와 List<T> 가 있다.
이들 동적 배열 클래스들은 배열 확장이 필요한 경우,
내부적으로 배열 크기가 2배인 새로운 배열을 생성하고 모든 기존 배열 요소들을
새로운 배열에 복사한 후 기존 배열을 해제한다.
동적 배열의 Time Complexity는 배열과 같이 인덱스를 통할 경우 0(1),
값으로 검색할 경우 0(n)을 갖는다.
ArrayList 클래스 :
ArrayList는 모든 배열 요소가 object 타입인 Non-generic 동적 배열 클래스이다.
.NET의 Non-generic 클래스들은 박싱/언박싱이 일어나게 된다는 단점이 있다.
ArrayList는 배열 요소를 읽어 사용할 때 object를 반환하므로
일반적으로 원하는 타입으로 먼저 캐스팅을 한 후 사용하게 되기 때문이다.
List<T> 클래스 :
List<T>는 배열요소가 T 타입인 Generics로써 동적 배열을 지원하는 클래스이다.
List클래스는 내부적으로 배열을 가지고 있으며,
동일한 타입의 데이터를 저장한다.
만약 미리 할당된 배열 크기(Capacity)가 부족하면 내부적으로 배열을 2배로 늘려
동적으로 배열을 확장한다.ArrayList와 다르게 캐스팅을 할 필요가 없으므로, 박싱/언박싱의 문제를 발생시키지 않는다.
'C# > 자료구조' 카테고리의 다른 글
[C# 자료구조] 동적 배열 구현 방식과 시간 복잡도 (0) | 2022.08.02 |
---|---|
[C#] new 연산자, boxing (0) | 2022.02.12 |