전체 글

C#, 유니티 게임 개발자
1. 컨테이너 어댑터란?C++ STL에는 vector, list, deque, map, set처럼 데이터를 직접 저장하고 순회할 수 있는 컨테이너들이 있다.반면 stack, queue, priority_queue는 조금 다르다.이들은 컨테이너 어댑터(Container Adapter) 라고 부른다.컨테이너 어댑터→ 기존 컨테이너를 내부적으로 사용하면서→ 특정 자료구조의 규칙에 맞게 기능을 제한한 STL 도구예를 들어 deque는 앞뒤 삽입, 삭제, 인덱스 접근 등 다양한 기능을 제공한다.하지만 stack은 스택답게 동작해야 한다.stack→ 마지막에 넣은 것만 먼저 꺼낸다.→ 중간 요소 접근은 허용하지 않는다.그래서 std::stack은 내부적으로 deque 같은 컨테이너를 사용하되, 외부에는 push, ..
1. 핵심 내용이번 파트에서 진짜 중요한 것은 다음 세 가지다.1. 해시 테이블이 무엇인지2. unordered_map이 C# Dictionary와 비슷하다는 것3. unordered_set이 C# HashSet과 비슷하다는 것나머지 unordered_multimap, unordered_multiset은 “이런 것도 있다” 정도로 먼저 이해해도 된다.Unity C# 기준으로 보면 다음과 같다.C++Unity C#중요도unordered_mapDictionary높음unordered_setHashSet높음unordered_multimap중복 key 가능한 Dictionary 느낌낮음unordered_multiset중복 허용 HashSet 느낌낮음2. 해시 함수란 무엇인가?해시 함수는 입력된 key를 숫자 값으..
1. set이란 무엇인가?std::set은 C++ STL에서 제공하는 중복 없는 값 집합 컨테이너다.#include std::set bannedUsers;map이 key-value 구조였다면:map→ key와 value를 함께 저장→ "User1" : 100set은 key 자체만 저장한다.set→ key만 저장→ "User1"즉, 어떤 값이 존재하는지 여부가 중요할 때 사용한다.2. set의 특징set의 핵심 특징은 다음과 같다.중복 값을 허용하지 않는다.값이 자동 정렬된다.탐색, 삽입, 삭제가 O(log n)이다.operator[]를 지원하지 않는다.예를 들어:std::set bannedUsers;bannedUsers.insert("User1");bannedUsers.insert("User13");ba..
1. map이란 무엇인가?std::map은 C++ STL에서 제공하는 key-value 기반 연관 컨테이너다.#include std::map godMap;하나의 데이터가 key와 value로 묶여 저장된다.key → "Zeus"value → 1000Unity C#의 Dictionary와 비슷하게 느껴질 수 있다.Dictionary godMap;다만 정확히는 C++의 std::map은 C#의 Dictionary보다 SortedDictionary에 더 가깝다.C# Dictionary→ 해시 기반→ 정렬 안 됨→ 평균 O(1)C++ std::map→ 트리 기반→ key 기준 자동 정렬→ O(log n)C++에서 C# Dictionary와 더 비슷한 것은 std::unordered_map이다.std::uno..
1. pair란 무엇인가?std::pair는 서로 관련 있는 두 값을 하나로 묶는 C++ STL 클래스다.#include std::pair bossData;이 코드는 문자열 하나와 정수 하나를 묶어서 관리한다.bossData.first→ 첫 번째 값bossData.second→ 두 번째 값예를 들어 보스 이름과 체력을 묶을 수 있다.std::pair bossData;bossData.first = "Hades";bossData.second = 500;이 경우 first는 보스 이름, second는 체력이다.first = "Hades"second = 5002. pair를 왜 사용할까?pair는 두 값이 서로 관련되어 있을 때 사용한다.예를 들어 게임 데이터에서는 이런 경우를 생각할 수 있다.아이템 ID +..
1. std::array란 무엇인가?std::array는 C++ STL에서 제공하는 고정 크기 배열 컨테이너다.#include std::array numbers = { 1, 2, 3, 4, 5 };기존 C 스타일 배열과 비슷하게 크기가 고정되어 있다.int numbers[5];하지만 std::array는 STL 컨테이너이기 때문에 더 안전하고 편리한 기능을 제공한다.numbers.size();numbers.front();numbers.back();numbers.at(2);numbers[3];쉽게 말하면 다음과 같다.std::array→ 크기가 고정된 배열을 STL 컨테이너처럼 사용할 수 있게 만든 것2. array의 기본 사용법#include #include using namespace std;int m..
1. list와 forward_list란?std::list와 std::forward_list는 C++ STL에서 제공하는 연결 리스트 계열 컨테이너다.#include #include 둘 다 vector처럼 메모리에 연속적으로 저장되는 구조가 아니다.vector→ [10][20][30][40]→ 메모리 연속list / forward_list→ [10] -> [20] -> [30] -> [40]→ 노드들이 포인터로 연결차이는 다음과 같다.std::list→ 이중 연결 리스트→ 이전 노드와 다음 노드를 모두 알 수 있음std::forward_list→ 단일 연결 리스트→ 다음 노드만 알 수 있음2. std::list 기본 사용법std::list는 이중 연결 리스트다.#include #include using ..
1. Iterator란 무엇인가?Iterator는 STL 컨테이너 안의 특정 위치를 가리키고, 그 위치를 이동하며 요소에 접근할 수 있게 해주는 객체다.std::vector numbers = { 1, 2, 3 };auto iter = numbers.begin();쉽게 말하면 컨테이너 전용 포인터처럼 생각할 수 있다.Iterator→ 컨테이너 내부 요소를 가리키는 객체→ 순회, 접근, 삽입/삭제 위치 지정에 사용STL에는 vector, list, map, set처럼 다양한 컨테이너가 있다.이 컨테이너들의 내부 구조는 다르지만, iterator를 사용하면 비슷한 방식으로 순회할 수 있다.2. begin()과 end()컨테이너 순회에서 가장 기본이 되는 함수는 begin()과 end()다.std::vector..
HeadlessCreator
머리없는개발자