#include <list>
#include <map>
int main()
{
// [iterator 순회]
{
std::list<int> NewList;
std::list<int>::iterator StartIter = NewList.begin();
std::list<int>::iterator EndIter = NewList.end();
for (; StartIter != EndIter; ++StartIter)
{
}
}
{
std::map<int, int> NewMap;
std::map<int, int>::iterator StartIter = NewMap.begin();
std::map<int, int>::iterator EndIter = NewMap.end();
for (; StartIter != EndIter; ++StartIter)
{
}
}
// [ranged for 순회]
{
std::list<int> NewList;
for (int& Value : NewList)
{
/*
ranged for의 단점
순회하는 동안 자료구조의 메모리 구조가 변경되면 치명적인 에러를 반환한다.
- 값 변경 (가능)
- 노드 삭제 (치명적인 에러)
std::list<int> NewList;
for (size_t i = 0; i < 100; i++)
{
NewList.push_back(i);
}
for (int& Value : NewList)
{
NewList.erase(NewList.begin()); // ERROR
}
*/
}
}
{
std::map<int, int> NewMap;
for (std::pair<const int, int>& Map : NewMap)
{
}
}
}
💡 컨텐츠 프로그래머가 엔진 구조에서 집중해서 봐야할 것
- 오브젝트 개념
: 화면에 존재하는 개념들
- 만들기, 찾기, 함수 실행하기, …
- 릴리즈 개념
: 화면에 존재하는 개념들이 사라질 때 어떻게 정리하는지- 렌더링 개념
: 화면에 어떻게 그려지는지- 콜리전 개념
: 화면 안의 존재들이 어떻게 상호작용하는지
화면에 보이는 존재들 뿐만 아니라, ‘장면’이라는 개념도 표현한다.
흔히 ‘스테이지’라고 부르지만 언리얼에서는 ‘Level’, 유니티에서는 ‘Scene’이라고 부른다.
e.g. Level 목록 : Title, Stage1, Stage2, …, End
Stage1 Level 안에 A 몬스터, B 몬스터가 나온다.
Stage2 Level 안에 C 몬스터, D 몬스터, E 몬스터가 나온다.
…
언리얼 오브젝트 명칭에 따른 분류
A가 붙은 오브젝트명 ⇒ 화면에 위치가 존재하는 오브젝트
U가 붙은 오브젝트명 ⇒ 화면에 위치가 존재하지는 않지만, 엔진에 속해있는 오브젝트
(참고) F가 붙은 명칭 ⇒ 구조체라는 의미
~ to be written ~
(언리얼과 유사하게 구성하려 노력했다.)