Vector의 역순 검색, 역 반복자(reverse_iterator)
지난번 UI를 만들 때
벡터에 있는 객체들을
순차적으로 그려줄때
맨 마지막 벡터 객체가 맨 위로 올라오게 됩니다.
업데이트 순서는 그러면 역순으로 처리해야
창이 겹칠때의 처리 영역이 올바르게 동작하는데
일반 iterator로는 역순으로 검색도 못하고
erase 할 때에도 문제가 있더라고요.
그래서 구글링으로 찾아본 결과
reverse_iterator 라는 존재를 알게 되었습니다.
오늘은 이 reverse_iterator 에 대한 정리입니다.
헤더에 아래외 같이 벡터와 이터레이터
역순 검색을 위한 reverse_iterator 를 설정했습니다.
비교를 위해 일반 iterator 도 주석으로 보여놨습니다.
vector<userInterface*> _vUI;
//vector<userInterface*>::iterator _viUI;
vector<userInterface*>::reverse_iterator _vriUI;
실제 cpp코드에서 사용할 때에는 아래와 같았습니다.
//역순 검색 -> reverse_iterator 사용
if (!_vUI.empty()) //비어있지 않다면
{
for (_vriUI = _vUI.rbegin(); _vriUI != _vUI.rend();) //반복문 에 rbegin(), rend()은 reverse용 begin(), end()라고 생각하심 됩니다.
{
//보여지는 상태이냐?
if ((*_vriUI)->isShow())
{
//그러면 업데이트
(*_vriUI)->update();
++_vriUI;
}
else
{
//삭제
(*_vriUI)->release();
_vriUI = vector<userInterface*>::reverse_iterator(_vUI.erase(_vriUI.base() - 1));
//reverse_iterator 형으로 바꾸어 주어야 합니다. 지우는 위치는 _vriUI.base() - 1
}
}
}
erase부분이 남달랐습니다만
잘 동작하고 있습니다.
벡터를 역순으로 탐색 하고자 하는 분들은 참고하시면 되시겠습니다.
그럼 오늘은 구정 전날이므로
새해복 많이 받으십시오.
'공부 > c++(c, STL)' 카테고리의 다른 글
[코딩문제]셀프 넘버(self-number) 풀이 (0) | 2016.06.18 |
---|---|
[코딩문제]문자열 거꾸로 출력 (0) | 2016.06.16 |
C++11 람다 식 (0) | 2016.06.10 |
공통함수 헤더 처리 시 유의 사항 - 추가(1) (0) | 2015.09.25 |
다른 class 가져올 때 포인터(*) 유무 차이 - 동적할당, 생성자, 소멸자 (0) | 2015.09.21 |
라그나로크 모작 26~27일차 - Detail, 정리
이제 다음 글은
설연휴 지나서
최종 동영상 예정
'게임 포트폴리오 > 라그나로크(WinApi,개인,4주)' 카테고리의 다른 글
라그나로크 모작 최종 - 동영상 (WinApi 포폴 4주 개인) (4) | 2016.02.09 |
---|---|
라그나로크 모작 25일차 - Astar 길찾기 알고리즘 개선 (0) | 2016.02.04 |
라그나로크 모작 24일차 - 미니맵 & 플레이어 스킬(2) (0) | 2016.02.03 |
라그나로크 모작 23일차 - 플레이어 스킬(1) (0) | 2016.02.02 |
라그나로크 모작 22일차 - 사운드 시작(FMOD) (0) | 2016.02.01 |
라그나로크 모작 25일차 - Astar 길찾기 알고리즘 개선
'게임 포트폴리오 > 라그나로크(WinApi,개인,4주)' 카테고리의 다른 글
라그나로크 모작 최종 - 동영상 (WinApi 포폴 4주 개인) (4) | 2016.02.09 |
---|---|
라그나로크 모작 26~27일차 - Detail, 정리 (0) | 2016.02.06 |
라그나로크 모작 24일차 - 미니맵 & 플레이어 스킬(2) (0) | 2016.02.03 |
라그나로크 모작 23일차 - 플레이어 스킬(1) (0) | 2016.02.02 |
라그나로크 모작 22일차 - 사운드 시작(FMOD) (0) | 2016.02.01 |