목록전체 글 (156)
승쨩개발공부
list -> 노드를 기반으로 하는 컨테이너 이다 -> 배열 기반 컨테이너가 아니기떄문에 인덱스 접근이 불가능하다. -> 더블 링크드 리스트로 구현되어 있다. -> 앞,뒤 노드의 삽입 및 삭제가 가능하다 각 노드는 연속적인 메모리를 사용하는 것이 아니고, 비 연속적인 메모리에 여기저기 저장되지만 포인터로 각 노드를 연결하여 마치 연속된 메모리를 사용하는 것처럼 보인다. -> 임의 접근이 불가능 -> 탐색하고자하는 원소가 나올 떄까지 모든 노드를 순회해야함 -> 선형시간 O(n) 삽입 삭제 시에는 단순 포인터의 해제 및 연결만 하기 떄문에 메모리를 밀고 당길 필요가 없어 빠르다.(상수 시간 O(1)) 메모리의 재할당 및 복사가 필요 없기 떄문에 런타임 시에도 삽입 삭제가 용이하다. list의 사용 list..
1. Free함수 순수 가상함수 처리 순수 가상함수로 처리하였기에 정의부 Free함수는 지워준다. 2. Defines 만들기 엔진 솔루션에 Defines 헤더파일 4개를 만들어준다 엔진 솔루션 .h파일이기에 엔진폴더 Public에 생성해준다. #1. Engine_Typedef.h 메모리 관리를위해 자주쓰는 자료형을 typedef(별명) 을 잡아준다. Signed 와 unsigned? -> 정수 기반 자료형은 signed와 unsigned형식으로 나누어져있다 -> 사용할 데이터가 양수와 음수 값 모두 사용한다면 signed 자료형 을 선택하고, -> 사용할 데이터가 양수 값만 사용한다면 unsigned 자료형을 선택해서 사용한다. -> signed char 의 데이터 표현 범위 -128 ~ 127 총 25..
1. 빈 프로젝트 생성 솔루션이 생성 되었으면 FramWork -> 우클릭 -> 제거 해주어 다음과 같이 솔루션만 남겨놓고 만들어진 프로젝트를 지워준다. 2. Clinet 프로젝트와 Engine(DLL) 프로젝트 만들기 비어있는 FrameWrok솔루션에 오른쪽 마우스 클릭 후 Client프로젝트와 Engine프로젝트를 만들어준다. Client 프로젝트는 Win32프로젝트 Engine 프로젝트는 Win32프로젝트에서 DLL과 빈프로젝트 체크박스를 체크해준다. Cilent : exe파일 Engine : lib파일 이렇게 마쳤다면 완성결과는 아래와 같을것이다 이 다음 Cilent와 Engine프로젝트도 1번과 같이 제거를해주자. 그다음 솔루션 -> 우클릭 -> 파일 탐색기에서 폴더열기 를 해주자. 3. 폴더 ..
vector의 메모리 정책 -> vector는 메모리 개수를 초과하는 삽입의 시도가 있을 경우 재할당 및 복사가 발생한다. -> 재할당은 (기존 메모리 개수 / 2) 만큼 추가로 할당이 된다. -> 재할당 및 복사를 최소화 하기 위해 사용할 만큼 메모리를 예약하여 사용하는 것이 좋다. #1. 생성자 -> 메모리 개수를 생성자의 인자만큼 만들어준다. -> 단, 원소도 모두 채워 넣는다 -> 사용하기 위해서는 clear 이후 push_back을 사용하는 방법과 -> 인덱스 접근을 통한 대입을 이용하면 된다. #2. reserve -> 객체 생성 후 멤버 함수를 호출하면 된다. = 결과값은 위와 같다
조건자 -> 알고리즘 함수의 인자로 적용된다. -> 오름차순 또는 내림차순, 탐색 기준 등 조건을 설정한다. -> bool타입의 값을 반환하는 함수 포인터, 함수 객체를 사용한다. 조건자 만들기 조건자를 통해서 정렬을 시도하려면 알고리즘 함수가 필요하다. 알고리즘 함수를 사용하기 위해서는 #include 추가가 필요하다. 알고리즘 함수 ##1. _Sort(#1, #2, #3) -> 배열 기반 컨테이너에서만 작동한다. #1 : 시작 위치를 가리키는 것. (반복자, 포인터) == (begin) #2 : 마지막 원소 다음 위치를 가리키는 것. (반복자, 포인터) == (end) #3 : 조건자. == (조건자 함수) 그런데 C++에서는 조건자를 제공하는 _functional이라는 파일이 존재한다. -> 단, ..