게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
STL map과 검색에 관한 질문입니다.
게시물ID : programmer_3136짧은주소 복사하기
작성자 : 식인메뚜기
추천 : 0
조회수 : 454회
댓글수 : 9개
등록시간 : 2014/05/08 16:51:21
map<uint32_t, classA> 이런 식의 map가 있습니다.
class A에는 주소 첫값, 끝값 이렇게 2개의 uint32_t(startAddress, endAddress)가 있고,
첫값은 map의 key로 쓰입니다.
[startAddress, endAddress) 범위에 있는(startAddress보다 크거나 같고 endAddress보다 작은) 값이 들어오면 해당하는 pair에 대한 iterator를 리턴하게 하려고 합니다.
근데 그냥 lower_bound, upper_bound를 쓰면 원하는 범위가 안 나오네요.

어떤 상황이냐면,
2개의 pair가 map에 들어가 있다고 합시다.
(startAddress, endAddress) = (7dd70e00, 7dd7103d), (7dd7103d, 7dd71072) 이렇게 2개라고 하면,
입력값에 따른 리턴값이 이렇게 되어야 합니다:

1. 7dd70d00 : (7dd70e00, 7dd7103d)를 가리키는 iterator
2. 7dd70e00: (7dd70e00, 7dd7103d)를 가리키는 iterator
3. 7dd70fff: (7dd70e00, 7dd7103d)를 가리키는 iterator
4. 7dd7103d: (7dd7103d, 7dd71072)를 가리키는 iterator
5. 7dd710ee: (7dd7103d, 7dd71072)를 가리키는 iterator

lower_bound를 쓰면 이렇게 됩니다:

1. 7dd70d00 : (7dd70e00, 7dd7103d)를 가리키는 iterator
2. 7dd70e00: (7dd70e00, 7dd7103d)를 가리키는 iterator
3. 7dd70fff: (7dd7103d, 7dd71072)를 가리키는 iterator
4. 7dd7103d: (7dd7103d, 7dd71072)를 가리키는 iterator
5. 7dd710ee: map의 끝을 가리키는 iterator

upper_bound를 쓰면 이렇게 됩니다:

1. 7dd70d00 : (7dd70e00, 7dd7103d)를 가리키는 iterator
2. 7dd70e00: (7dd7103d, 7dd71072)를 가리키는 iterator
3. 7dd70fff: (7dd7103d, 7dd71072)를 가리키는 iterator
4. 7dd7103d: map의 끝을 가리키는 iterator
5. 7dd710ee: map의 끝을 가리키는 iterator

제 기억에 이걸 key_comp였나? map을 만들 때 비교 함수를 잘 지정해 주면 제가 원하는 범위의 값이 나왔던 거 같은데,
그 방법을 잊어버려서 질문합니다.
방법이 없을까요?
전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호