목록C++ (3)
공부용 이모저모

개요 기존 malloc이나 new연산자의 경우, 사이즈가 고정되지 않아 생성과 삭제를 반복할경우 메모리 단편화 현상이 생긴다. 대충 설명하자면 이런 형태이다. 여기서 중요한점은, 시스템에서 딱히 저 빈공간을 당겨주거나 하지 않는다는 것이다. 힙메모리 공간특성상 당연히 훨씬 큰 용량이 있겠지만, 사진처럼 용량이 12바이트라고 가정하자면, 남아있는 공간이 4바이트이기 때문에 int형을 한번더 만들 수 있다고 생각 할 수 있지만, 실제로는 떨어져있는 2바이트 공간 2개만이 남은것이라 생성이 불가능하다. 공간이 크다고 가정해도 저런식으로 크기가 다른 new와 delete를 반복한다고 하면 아래와 같은 모양이 나온다. PC에서도 이러한 것을 정리해서 공간을 넓히는 [디스크 조각모음]이라는 메뉴가 있다. 이런식으로..

DFS - 깊이 우선 탐색 연결된 노드를 계속 들어가며 재귀호출한다. #include #include #include using namespace std; bool visit[10] = { false };//방문여부 vector map[10]; int num; #pragma warning(disable:4996) void dfs(int v) { //방문하지 않은것만 체크한다 if (visit[v]) return; visit[v] = true; printf("%d", v); for (int i = 0; i < map[v].size(); i++) { int tmp = map[v][i]; //재귀함수로 다음으로 넘어간다. dfs(tmp); } } //양쪽 노드를 연결해준다 void AddLine(int a, ..

참조:http://www.gisdeveloper.co.kr/?p=3897 다익스트라 알고리즘과의 차이 다익스트라 알고리즘 - 시작 노드만을 기점으로 모든 노드에대한 최단경로를 파악 A* 알고리즘 - 시작지점과 목적지점을 지정해 둚으로써 두 노드간의 최단경로를 파악 직선상의 거리를 안다는 가정하의 이론 리스트의 종류는 OpenList, CloseList가 있다. OpenList - 앞으로 방문할 수 있는 지역(마지막으로 간 노드에서 인접한 노드) CloseList - 이미 방문한 지역(계산에서 제외한다) 0번이 시작이기 때문에 ClostList에 0번을 넣고 시작한다. 0번이랑 연결된 모든 노드들을 Open List에 집어넣는다.(1,3이 있다) Open List에 들어가는 구조체의 정보는 Parent N..