Cpp에서는 컨테이너라고 불리우는 Csharp의 컬렉션에 대해 알아보자
컬렉션(Collection)
변수를 여러개 모아 편하게 쓰기 위해서 만들어놓은 자료구조이다.
1. List (C#) / Vector (C++)
- 가변배열
- 선형구조이다. 차곡차곡 쌓이기 때문에 인덱스를 통해 값을 가져올 수 있다.
- 내부적으로 배열로 구현되어있으나 저장할 데이터 개수에 따라서 크기가 자동으로 변한다.
List<int> listName = new List<int>(); // 리스트 선언
listName.Add(0); // listName에 0을 추가
listName.RemoveAt(1); // 2번째(0,1~순서이므로) 인덱스 값을 삭제
listName.insert(1,3); // 2번째 인덱스에 3을 삽입
2. Set
- 수학에서 말하는 집합을 의미하는 자료구조
- 중복된 값을 저장하지 않는다.
3. Dictionary(C#) / Map(C++)
- 키, 값 순서쌍으로 된 데이터를 저장하는 자료구조이다.
- Hash table, Set으로 이루어져있다. (Hash table = key값과 Value값으로 되어있음, Set = key값이 중복될수 없다는 점)
- 값은 중복될 수 있으나 key는 중복되면 안된다.
- 다만 비선형구조라서 List와같이 인덱스번호로는 찾을수 없고, Key값으로 찾아야한다.
// Dictionary 선언
Dictionary<string,int> dictionaryName = new Dictionary<string,int>();
// dictionary에 추가하는 법
dictionaryName["첫번째"] = 1;
dictionaryName["두번째"] = 2;
dictionaryName["세번째"] = 3;
// 값을 쓰고싶을때도 키값을 입력해주면 된다.
Console.WriteLine(dictionaryName["첫번째"]);
// 값은 1이 출력된다.
4. Queue
- 가장 처음에 삽입한 데이터를 가장 먼저 내보낸다.
// 큐의 선언
Queue queName = new Queue();
// ()안의 값을 밀어넣는다.
queName.Enqueue(1);
queName.Enqueue(2);
queName.Enqueue(3);
// 값을 꺼내는 법
que.Dequeue();
que.Dequeue();
que.Dequeue();
// 1이 가장 먼저 출력된다.
// 그다음 2, 3
5. Stack
- 가장 마지막에 삽입한 데이터를 가장 먼저 내보낸다.
//스택의 선언
Stack stackName = new Stack();
// 스택에 값을 넣는법
stackName.Push(1);
stackName.Push(2);
stackName.Push(3);
//값을 꺼내는 법
stackName.Pop();
stackName.Pop();
stackName.Pop();
//3이 가장 먼저 출력된다.
// 2, 1 이 그 다음 순서
6. ArrayList
- Cpp에는 없고 C#에는 있다.
- 다양한 데이터타입을 한 배열에 넣고 사용을 할 수가 있다.
- 다양한 데이터타입을 한 배열에 넣고 사용을 하기때문에 잘 사용하지 않는다.
- ArrayList를 일반화한 구조가 List이다.
7. Hash Table
- 키값과 벨류값으로 이루어져있다.
- Hash Table을 일반화한 구조가 Dictionary이다.
'프로그래밍 > C#' 카테고리의 다른 글
[C#] 프로퍼티, 왜 사용하는거지? (0) | 2023.06.18 |
---|---|
foreach 이용 (0) | 2023.06.15 |
C#에서 배열(Array), 이차원배열, 다차원배열, 가변배열 선언 (0) | 2023.06.15 |
Static 키워드가 동작하는 시점(compile Time,Run Time) (0) | 2023.06.15 |
[C#] 클래스(Class) 두번째 시간 (0) | 2023.06.13 |