map<uint32_t, classA> 이런 식의 map가 있습니다. <div>class A에는 주소 첫값, 끝값 이렇게 2개의 uint32_t(startAddress, endAddress)가 있고,</div> <div>첫값은 map의 key로 쓰입니다.</div> <div>[startAddress, endAddress) 범위에 있는(startAddress보다 크거나 같고 endAddress보다 작은) 값이 들어오면 해당하는 pair에 대한 iterator를 리턴하게 하려고 합니다.</div> <div>근데 그냥 lower_bound, upper_bound를 쓰면 원하는 범위가 안 나오네요.</div> <div><br /></div> <div>어떤 상황이냐면,</div> <div>2개의 pair가 map에 들어가 있다고 합시다.</div> <div>(startAddress, endAddress) = (7dd70e00, 7dd7103d), (7dd7103d, 7dd71072) 이렇게 2개라고 하면,</div> <div>입력값에 따른 리턴값이 이렇게 되어야 합니다:</div> <div><br /></div> <div>1. 7dd70d00 : <span style="font-size: 9pt; line-height: 1.5">(7dd70e00, 7dd7103d)를 가리키는 iterator</span></div> <div>2. 7dd70e00: (7dd70e00, 7dd7103d)를 가리키는 iterator</div> <div>3. 7dd70fff: (7dd70e00, 7dd7103d)를 가리키는 iterator</div> <div>4. 7dd7103d: (7dd7103d, 7dd71072)를 가리키는 iterator</div> <div>5. 7dd710ee: (7dd7103d, 7dd71072)를 가리키는 iterator</div> <div><br /></div> <div>lower_bound를 쓰면 이렇게 됩니다:</div> <div><br /></div> <div><div>1. 7dd70d00 : <span style="font-size: 9pt; line-height: 1.5">(7dd70e00, 7dd7103d)를 가리키는 iterator</span></div> <div>2. 7dd70e00: (7dd70e00, 7dd7103d)를 가리키는 iterator</div> <div>3. 7dd70fff: <span style="font-size: 9pt; line-height: 1.5">(7dd7103d, 7dd71072)를 가리키는 iterator</span></div> <div>4. 7dd7103d: (7dd7103d, 7dd71072)를 가리키는 iterator</div> <div>5. 7dd710ee: map의 끝을 가리키는 iterator</div></div> <div><br /></div> <div>upper_bound를 쓰면 이렇게 됩니다:</div> <div><br /></div> <div><div>1. 7dd70d00 : <span style="font-size: 9pt; line-height: 1.5">(7dd70e00, 7dd7103d)를 가리키는 iterator</span></div> <div>2. 7dd70e00: <span style="font-size: 9pt; line-height: 1.5">(7dd7103d, 7dd71072)를 가리키는 iterator</span></div> <div>3. 7dd70fff: <span style="font-size: 9pt; line-height: 1.5">(7dd7103d, 7dd71072)를 가리키는 iterator</span></div> <div>4. 7dd7103d: map의 끝을 가리키는 iterator</div> <div>5. 7dd710ee: map의 끝을 가리키는 iterator</div></div> <div><br /></div> <div>제 기억에 이걸 key_comp였나? map을 만들 때 비교 함수를 잘 지정해 주면 제가 원하는 범위의 값이 나왔던 거 같은데,</div> <div>그 방법을 잊어버려서 질문합니다.</div> <div>방법이 없을까요?</div>
댓글 분란 또는 분쟁 때문에 전체 댓글이 블라인드 처리되었습니다.