-
Effective C++ Ch.1Study/C/C++ 2017. 5. 23. 16:18
Chapter 1. C++에 왔으면 C++의 법을 따릅시다. 항목 1. C++를 언어들의 연합체로 바라보는 안목은 필수 ( C++ ) = ( C ) + ( 객체 지향 개념의 C++ ) + ( 템플릿 C++ ) + ( STL ) C : 절차 지향 개념의 언어, C++의 기본이 된다. 객체 지향 개념의 C++ : 클래스, 캡슐화, 상속, 다형성, 가상 함수 등을 포함- 클래스 : 데이터와 기능을 구현하는 일종의 틀- 캡슐화 : 외부의 객체로부터 내부의 데이터에 대한 접근을 제한하는 것(정보 은닉)- 상속 : 기존의 클래스들을 바탕으로 새로운 클래스를 만든다.- 다형성 : 하나의 인터페이스로 다양한 기능을 가질 수 있다. 오버로딩, 오버라이딩 템플릿 C++ : 템플릿 메타프로그래밍 - 템플릿을 이용한 프로그래..
-
오브젝트 풀링Study/Unity 2017. 5. 17. 20:40
오브젝트 풀링은 재사용되는 오브젝트를 미리 생성해 놓고 활성/비활성하여 사용한다. 장점 - 오브젝트를 생성/삭제 하면서 발생하는 가비지 컬렉팅을 막을 수 있다. 단점 - 오브젝트를 미리 생성해 놓고 사용하기 때문에 너무 많은 오브젝트를 생성해 놓을 경우 로딩 시간이 무한정 길어질 수 있다. 또한, 사용되지 않는 때에 메모리가 낭비된다. 구현 1. PooledObject- Pool에 넣을 오브젝트를 담을 리스트(직렬화된 공간으로)- PooledObject를 관리하는 ObjectPool에 Push/Pop 하는 함수 2. ObjectPool- PooledObject를 담을 리스트(여러 개의 Pool 관리)- 각각의 Pool 이름으로 Pool을 찾아 반환해주는 함수
-
그래프Study/DataStructures 2017. 4. 28. 17:06
그래프 - 원소 간의 관계를 표현 -> 정점, 간선으로 이루어진 자료 구조 - 선형이나 트리로 표현할 수 없는 연결 구조를 표현할 수 있다. -> 비선형 자료 구조 - 그래프는 사이클이 있을 수 있다. / 트리에서는 사이클이 존재하지 않음. - 차수 : 정점에 연결된 간선의 수 -> 진출 차수 : 정점에서 나가는 간선의 수 -> 진입 차수 : 정점으로 들어오는 간선의 수 그래프의 종류 무방향 그래프 - 두 정점을 연결하는 간선의 방향이 없는 그래프 - 정점 A와 정점 B를 연결하는 간선 (A, B) = (B, A) 방향 그래프 - 두 정점을 연결하는 간선의 방향이 있는 그래프 - 정점 A와 정점 B를 연결하는 간선 A -> B : / B -> A : 완전 그래프 - 각 정점에서 다른 모든 정점을 연결한 ..
-
이진 트리Study/DataStructures 2017. 4. 28. 05:07
이진 트리 - 모든 노드의 차수를 2 이하로 제한한 트리 - 부모-자식 관계가 하위로 계속해서 이어지는 계층 구조 - n개의 노드는 n-1개의 간선을 가진다. - 높이가 h인 트리의 노드의 최소 개수는 h+1, 최대 개수는 이진 트리의 종류 - 완전 이진 트리 -> 높이가 h이고, 노드의 개수는 ~개 - 포화 이진 트리 -> 높이가 h일 때, 노드의 개수가 최대 노드 개수()이다. -> 공백 노드가 없기 때문에 노드를 더이상 추가할 수 없다. - 편향 이진 트리 -> 노드의 개수가 최소 개수이고, 왼쪽 또는 오른쪽 서브 트리만 가지고 있다. 이진 트리의 구현 1. 순차 자료 구조 - 배열 : 인덱스를 이용해 노드에 쉽게 접근 가능. 부모 노드와 자식 노드를 찾기 쉬움. - 완전 이진 트리의 경우, 메모리..
-
시간 복잡도Study/DataStructures 2017. 4. 28. 00:36
시간 복잡도 - 프로그램을 실행하여 완료하는데 걸리는 시간. - 컴파일 시간 + 실행 시간 - 컴파일 시간은 프로그램의 특성과 크게 관련 없음 -> 고정적인 시간 - 실행 시간은 명령문의 실행 빈도수 계산 -> 실제 실행 시간이 아닌 이유 : 실행하는 컴퓨터의 성능에 따라 달라질 수 있기 때문에. - 빅오 표기법, 세타 표기법, 오메가 표기법 -> 최악, 평균, 최선 - 빅오 표기법 -> 실행 빈도수를 구하고, n에 대한 항에서 계수를 생략하여 표시한다. -> log n < n < n log n < n^2 < 2^n 순으로 커진다.
-
순차 리스트 / 연결 리스트Study/DataStructures 2017. 4. 19. 20:03
1. 순차 리스트 - 논리적인 순서와 물리적인 순서가 같은 구조.- 메모리에 연속적으로 저장된다. ex) Array - 구현이 비교적 간단하고, 인덱스를 사용하여 랜덤 액세스가 가능하다. - 논리적인 순서와 물리적인 순서가 동일하기 때문에 삽입, 삭제가 되는 경우,물리적인 순서를 논리적인 순서에 맞추기 위한 데이터의 이동이 필요하다.(물리적인 순서를 맞추기 위한 오버헤드 발생) - 예를 들어, 1 ~ 10 까지의 데이터를 저장하고 있는 순차 리스트가 있다고 가정한다. 맨 앞의 1을 삭제한다면, 그 다음에 존재하는 2 ~ 9의 데이터가 하나씩 앞으로 당겨지는 이동이 발생한다. 반대로 3과 4 사이에 데이터가 삽입된다면, 4 ~ 10의 데이터가 뒤로 하나씩 이동해야 하는 일이 발생한다. 2. 연결 리스트 -..
-
랜더링 파이프라인Study/3D 2016. 9. 5. 03:23
- 로컬 스페이스 -> 월드 스페이스 -> 뷰 스페이스 -> 후면 추려내기 -> 조명 -> 클리핑 -> 투영-> 뷰 포트 변환 -> 레스터라이즈 - 로컬 스페이스: 오브젝트 자체 좌표, 오브젝트가 가지고 있는 좌표 - 월드 스페이스: 오브젝트들이 모여 있는 월드(씬)의 좌표, 오브젝트들간의 관계를 정의할 수 있다. - 뷰 스페이스: 카메라를 중심으로 한 오브젝트의 좌표, 카메라가 보고 있는 방향이 +z축 - 후면 추려내기: 보통 폴리곤의 후면은 보여지지 않는다. 굳이 그릴 필요가 없다면 그리지 않는다.삼각형의 꼭지점을 시계 방향으로 그리면 전면, 반시계 방향으로 그리면 후면.삼각형의 꼭지점을 시계 방향으로 외적하면 전면으로 법선 벡터가 나오고,반시계 방향으로 외적하면 후면으로 법선 벡터가 나온다. - 클..