목록분류 전체보기 (156)
승쨩개발공부
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이라는 파일이 존재한다. -> 단, ..
반복자 -> 객체이다. -> 포인터의 사용 방법을 토대로 연산자 오버로딩하여 구현 객체. -> 컨테이너마다 데이터의 저장 방식이 다르기 떄문에 순회하는 방법 또한 달라진다. -> 이러한 방법들을 획일화하기 위해 반복자를 만들어 놓았다. -> 반복자는 컨테이너의 원소를 가리키는 것. 반복자 선언 -> 각 컨테이너 내부에 구현되어 있다. -> 스코프 연산자를 통해서 접근한다. front와 back front : vector의 첫 번쨰 원소에 접근 back : vector의 마지막 원소에 접근 반복자 초기화 -> 컨테이너가 반복자를 반환하게 하면 된다. 반복자를 초기화하기 위해 대입을 시도하게 되는데, 여기서 대입 연산자 기준 좌측은 객체이기 떄문에 객체 타입을 통해서 초기화를 진행해야 한다. vector.f..
vector 배열 기반의 컨테이너 배열 기반이기 떄문에 인덱스 접근이 가능하다. (탐색의 용이) 원소 삽입/삭제 시에는 앞에서부터 할 수 없으며, 맨 뒤에서만 가능하다. -> 중간 삽입 및 삭제 시에는 삽입 위치의 확보, 삭제 위치의 활용을 위해 -> 해당 원소 이후 포인터의 이동이 발생한다. (선형 시간 O(n)) -> 단 맨 끝에서 삽입 및 삭제는 포인터 이동이 필요 없다.(상수 시간 O(1)) -> 배열 기반이기 떄문에 메모리 개수를 넘어서는 삽입의 시도가 있을 경우 -> 배열의 재할당 및 기존 원소들의 복사가 발생한다. -> vector의 원소를 삭제하여 원소가 존재하던 메모리 공간은 남아 있는다. -> 결론적으로 vector는 삽입 삭제가 불리하다고 할 수 있다. vector의 사용법 -> ve..
vector 동적 배열을 기반으로하는 컨테이너 동적 배열 기반이므로 인덱스 접근이 가능하다 (탐색이 좋다) 원소를 삽입할 경우 앞에서는 할 수 없으며, 뒤에서부터 삽입해 나간다. 중간 삽입 및 삭제 시에는 삽입공간의 확보, 삭제 공간의 활용을 위해 해당 인덱스 이후 모든 원소들을 포인터 이동해야한다. (선형 시간) 단, 맨 끝에서 삽입 및 삭제 시에는 확보 및 활용할 필요가 없다. (상수 시간) 동적 배열이므로 배열의 크기를 넘어서는 삽입의 시도가 있을 경우 배열의 재할당 및 복사가 발생한다. 또한 원소를 삭제한다 하여도 배열의 크기는 줄어들지 않는다. -> 삽입 및 삭제 불리 -> 탐색이 용이 list 노드를 기반으로하는 컨테이너 더블 링크드 리스트로 구현이되어있다. 각 노드는 연속적인 메모리에 나열된..