C++10 c++ - 동적 배열 구현 (vector 구현) 제공되는 자료 구조를 직접 구현해보면 그 동작 방식을 더 잘 이해할 수 있다. 그래서 선형 자료구조를 각각 구현해보고자 한다. 이번 포스트에서는 동적 배열을 구현하는 과정에 대해 정리해보고자 한다. 동적 배열 (vector)동적 배열 자체에 대한 설명은 다음 포스트를 참고하면 된다. 2024.02.07 - [c++/기초] - c++ 기초 - 벡터 (vector) c++ 기초 - 벡터 (vector)STL? Standard Template Library의 약자로 미리 구현된 자료구조와 알고리즘들을 템플릿으로 제공하는 라이브러리이다. STL은 크게 알고리즘, 컨테이너, 함수자, 반복자(iterator)로 구성되어 있다. 컨테이dodongs-development-farm.tistory.com vector 자체.. 2024. 2. 18. c++ 기초 - deque deque "double-ended queue"의 약자로 맨 앞의 삽입과 삭제에서 비용이 많이 들었던 vector와 달리 양방향(앞,뒤) 사용을 편리하게 만든 컨테이너이다. 선언 1) 헤더 파일 및 네임스페이스 정의 #include using namespace std; // 편리성 위해 사용 2) 다양한 방식의 선언 및 초기화 1. 빈 deque deque 변수이름 ; 2. 지정한 크기에 모든 요소 0으로 초기화된 deque 생성 deque 변수이름(크기); 3. 지정한 크기에 모든 요소 기본값으로 초기화된 deque 생성 deque 변수이름(크기, 기본값); 4. 복사할 벡터와 동일한 크기와 데이터를 가지는 벡터 생성 deque 변수이름(복사할deque이름) 동작 원리 vector의 경우 할당된 cap.. 2024. 2. 8. 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. 이전 1 2 다음