이터레이터
[Unreal] 자료구조 순회 방법
TMap 변수명; Key = 키, Value = 값 범위 기반 for문 사용 구현, . 멤버 변수 접근자 사용 예) 변수명.Key, 변수명.Value for (auto 변수명 : TMap 변수명) { } 이터레이터 사용 구현, it-> 화살표 연산자 참조 또는 (*it) 역참조로 접근 예) it->Key, (*it).Value 주의) TConstIterator 형이지만 != 연산자는 nullptr과 비교 불가다. ++ 연산자는 파라미터를 봐서는 전위 연산자인데 후위 연산자는 복사 오버헤드로 인해 막아놓은듯 하다. for (auto it = TMap 변수명.CreateConstIterator(); it; ++it) { }
C++ STL 설명과 for-range 기반 loop
STL(Standard Template Library)은 C++ 내 템플릿 클래스들의 집합이며, 개발자에게 도움줄 수많은 자료구조와 함수들이 구현 되어있다. 기본 4가지로 구성 되어있다. 알고리즘 헤더 파일 내 (정렬, 탐색 컨테이너 (선형,비선형 자료구조) 예) , 함수 이터레이터 (반복자) 모든 컨테이너들은 이를 지원하지 않음. STL은 기본적으로 범위 기반 for문을 돌려 원소에 접근할 수가 있다. 핵심은 4번에 있다, 이를 실행할 수 있는 조건이 바로 .begin() 함수다 즉 첫 원소의 주소를 이터레이터 형태로 반환하는 함수다. 예) for(auto item : 컨테이너 이름) 여기서 한 가지 의문점이 들 수도 있는데 const auto : const auto& : auto : auto& : 위..
이터레이터 Iterator (반복자)
컨테이너에 저장되있는 원소들을 공통적인 방법으로 하나씩 접근할 수 있게 해줌. 모든 컨테이너들이 다 같은 방법으로 반복자 사용 가능. 각 타입에 ::iterator 또는 ::const_iterator 를 뒤에 붙여주면 사용이 가능하다. vector 컨테이너의 반복자 itr vector::iterator itr; vector 컨테이너의 const한 반복자 citr vector::const_iterator citr; 포인터와 비슷하게 사용한다. 간접 참조 가능) itr = v.begin() + 2 에서 *itr 간접 참조를 하면 세번째 원소 값이 리턴된다. iterator 와 const_iterator 의 차이 const_iterator 는 반복자가 가리키는 원소의 값을 변경하지 못한다. 반복자 값이 변경되..