묻공러
'C#/[루키스] 자료구조' 카테고리의 글 목록

C#/[루키스] 자료구조

C#/[루키스] 자료구조

[C# 섹션 5] Dictionary

# Dictionary- C#의 Dictionary와 HashSetC#의 Dictionary는 C++의 unordered_map과 거의 같다C#의 HashSet은 C++의 unordered_set과 거의 같다 - 주의점두 언어 모두 임의접근을 하는 경우 주의할 필요가 있다C#의 Dictionary[key]는 키가 없으면 예외가 발생한다반면, C++의 unordered_map[key]는 키가 없으면 기본 값을 생성하여 추가된다// C#Dictionary dict = new Dictionary();var value = dict[1]; // KeyNotFoundException 발생// C++unordered_map dict;auto value = dict[1]; // 새로운 키 1이 생성되고, 값은 기본값(..

C#/[루키스] 자료구조

[C# 섹션 5] List

# List- C# List 개념C#의 List는 C++의 vector와 같다고 보면 된다중간 삽입, 중간 삭제는 매우 비효율적이다 - C# List 주의점객체를 생성만 하고 임의 접근을 하면, 항상 런타임에서 ArgumentOutOfRangeException이 발생한다범위를 벗어난 접근 역시 항상 예외가 발생하며, C#의 런타임이 이를 안전하게 보호해 준다즉, C#의 인덱서 접근은 기본적으로 안전하지만주의해서 코드를 작성할 필요는 당연히 있다 - C++ vector 주의점객체를 생성만 하고 임의 접근을 하면 'Undefined Behavior'가 발생하며, Debug 모드에서는 크래시가 발생할 수 있지만,Release 모드에서는 크래시가 발생하지 않을 수도 있다범위를 벗어난 접근은 항상 크래시가 발생하..

C#/[루키스] 자료구조

[C# 섹션 5] 배열

# 배열- 배열Lvalue를 선언할 때 '[]' 위치가C++과는 좀 다르기에 헷갈리지 않아야 한다초기화 방식은 다양하게 지원하는 것을 알 수 있다// C++ int arr[5]; int* arr = new int[5];// C# int[] arr = new int[5];int[] arr2 = new int[5] { 10, 20, 30, 40, 50 };int[] arr2 = new int[] { 10, 20, 30, 40, 50 };int[] arr2 = { 10, 20, 30, 40, 50 }; - C# 배열은 동적할당C++ 배열은정적할당도 가능하고, new 키워드를 통해 동적할당도 가능하다 반면, C# 배열은참조타입으로 동적할당을 한다는 점이 중요하다 - arr.LengthC++에서 sizeof()를..