전체 글21 c++ 기초 - 리스트 (list) 리스트 (list) STL의 리스트는 시퀀스 컨테이너로 vector와 동일하게 순서를 유지하며 데이터를 선형적으로 관리한다. 노드 기반의 컨테이너이며 이중 연결 리스트로 구현되어 있다. 선언 list 리스트이름; 동작 원리 노드 기반의 컨테이너로 메모리상 연속적으로 위치하지 않으며 각 요소(노드)들은 데이터와 이전, 다음 노드의 주소를 가지고 있다. 노드 구조 노드는 데이터와 연결 정보(포인터)로 구성된다. class Node { public: Node* _next; // 다음 노드 가리키는 주소 Node* _prev; // 이전 노드 가리키는 주소 int _data; } 좀 더 이해하기 쉽게 도식화 한 그림이다. 각 노드들은 메모리 상 떨어져서 위치하며 next와 prev 포인터로 노드들이 연결되어 있.. 2024. 2. 7. c++ 기초 - 벡터 (vector) STL?Standard Template Library의 약자로 미리 구현된 자료구조와 알고리즘들을 템플릿으로 제공하는 라이브러리이다. STL은 크게 알고리즘, 컨테이너, 함수자, 반복자(iterator)로 구성되어 있다.컨테이너 (Container)데이터를 저장하는 객체(class template)를 의미한다. 데이터를 효과적으로 저장하기 위한 자료구조를 제공해준다.시퀀스 컨테이너 (Sequence Container) 요소가 삽입된 순서를 유지해주는 컨테이너이다. (즉, 요소들이 들어온 순서대로 나열되어 있는 형태이다.) 대표적으로 array, vector, list, deque이 있다. 오늘은 그 중 vector를 다뤄보고자 한다.벡터 (vector)벡터는 자동적으로 메모리가 할당되는 배열이다. 동적 .. 2024. 2. 7. c++ 기초 - 동적 할당 메모리 구조 1) 코드 영역: 실행할 코드가 저장되는 영역 2) 데이터 영역: 전역, 정적 변수가 저장되는 영역, 프로그램 실행 도중 계속 사용되는 메모리 3) 스택 영역: 지역 변수, 매개 변수가 저장되는 영역 (함수와 관련), 함수가 끝나면 메모리에서 해제 4) 힙 영역: 동적 할당 힙 영역의 필요성 기존에 데이터 영역과 스택 영역을 활용해 프로그램을 작성하는데 큰 문제가 없었다. 그렇다면 왜 힙 영역이라는 새로운 영역이 필요할까? 예를 들어 MMORPG에서 플레이어나 몬스터 생성에 대해 생각해보자. 플레이어는 1명부터 많게는 몇만명에 이른다. 몬스터 또한 다양한 숫자로 존재할 수 있다. 기존에 사용하던 스택 메모리로 처리하게 되면 어떻게 될까? 스택은 애초부터 많은 공간을 사용하는 것을 의도하고 만.. 2024. 2. 5. c++ 기초 - static 변수 및 함수, 정적 지역 객체 static 변수 클래스 내부에 멤버 변수로 선언하면 각 객체 별로 메모리에 고유한 공간을 할당받고, 객체마다 사용하는 고유한 변수가 되었다. (즉, 같은 클래스라해서 같은 변수를 공유하는 개념은 아니었다.) 한편, 전체 객체가 공유해서 사용해야 하는 상황에는 어떻게 해야할까? 예를 들어, 게임에서 특정 몬스터의 방어력을 전체로 낮추는 경우를 생각해보자. 각 객체별로 방어력에 접근해 낮추기 보다는 클래스(설계도)를 공유하는 모든 객체가 공유하는 변수가 필요하게 된다! 이때 바로 static 변수를 사용하게 된다. static 변수는 특정 객체에 종속적으로 사용되는 것이 아니라 클래스 전체가 사용하는 개념이다. class Monster { public: // 멤버 변수 => 특정 객체에 종속적 int _h.. 2024. 2. 5. unity - UI Toolkit이란? 유니티 UI 유니티에서 UI를 만드는 방식은 크게 2가지다. 1. IMGUI OnGUI 함수와 GUI 관련 라이브러리를 활용해 스크립트로만 작성하는 방식 (약간 java fx랑 비슷한 느낌..? 유니티에서 Custom Editor만들 때 사용해봤는데 layout 등등 직접 코드로 ui 배치하는 방식) 2. Unity UI (UGUI) 유니티에서 제공하는 UI 패키지를 활용하는 방식. UI Canvas 위에 UI 오브젝트들을 배치하고 컴포넌트와 인스펙터를 활용해 좀 더 직관적으로 UI를 다룰 수 있는 방식 3. UI Toolkit 오늘 소개할 UI Toolkit은 현재 WEB 프론트 엔드에서 널리 사용되는 방식으로 UI를 만든다. WEB 개발에서는 크게 3가지의 스크립트로 구성되는데 UI Toolkit도 .. 2024. 2. 4. c++ 기초 - 클래스 (생성자, 소멸자) 절차 지향 프로그래밍 모든 로직이 함수 기반으로 작성된다. 함수 호출 순서가 중요하며, 기능을 추가할 때 계속해서 함수를 늘려나가야 하므로 코드 확장성이 낮은 편이다. 객체지향 프로그래밍 객체를 중심으로 작성된다. 절차 지향과 달리 함수가 특정 데이터나 순서에 묶이지 않는다. 클래스 클래스는 객체를 생성하기 위한 설계도로 볼 수 있다. 설계도에는 속성(멤버 변수)과 기능(멤버 함수)를 정의하게 된다. 예를 들어, Animal 클래스에서 속성의 경우 이름, 친밀도 등이 될 수 있고 기능의 경우 밥먹기 잠자기 등이 될 수 있다. class 클래스명 { 접근 제어 지시자: 멤버 변수, 멤버 함수 등 정의 } 클래스에 다음과 같이 멤버 변수와 함수를 정의할 수 있다. 객체를 생성할 때 메모리에는 멤버 변수만 올.. 2024. 2. 4. 이전 1 2 3 4 다음