중복 된 코드를 리펙토링하려고합니다. 두 함수는 모두 equal_range()를 사용하여 멀티 맵에서 검색합니다. equal_range()를 호출 한 후 for 루프에는 반복자가 equalRange.first로 설정되고 for! = equalRange.second 조건이 설정되는 for 루프가 있습니다.오류가 발생하지 않고 equal_range를 사용하여 멀티 맵 검색에서 돌아 가기
올바른 값을 찾으면 두 기능이 다릅니다. 내가 뭘하고 싶은지 은 이전에 언급 된 2에 의해 사용되는 자체 도움말 기능으로 검색 기능을 가지고 있습니다.
저 작업을하는 것이 문제가되지 않습니다. 문제는 내가이 코드를 사용하는 다른 사람들에게 의미가있는 방식으로 "쉽고"미래의 증거가 될 수있는 방법을 찾아 낼 수 없다는 것입니다. 분명히, 나는 뭔가를 검색 기능에서 반환하고 싶습니다.
만약 값이 멀티 맵에서 발견되었다는 것을 나타내는 boolean 값을 반환한다면, 나는 엘리먼트를 가리키는 멀티 맵에 iterator를 넘겨 주어야한다. 나는 꽤 이상한 것을 발견한다 추한.
반복자가 반환 된 경우 물론 검색 기능을 사용하는 두 함수의 경계 인 에 대해 확인해야합니다. equal_range를 사용하기 때문에 을 multimap.end()와 비교할 수 없습니다. 따라서 equalRange.second는 과 같아야합니다. 따라서 multimap.end()와 같아야합니다. checkBound (x)는 과 multimap :: 어느 상한선을 반환 곳 returnIter == checkBound을 확인
사용하여 경계 (x)는 (x)는 checkBound한다 (x)는 검색 기능의 equal_range 구현 의 알고 있습니다. 따라서 다른 사람이 검색 기능을 변경해야하는 경우 checkBound (x)가 예상대로 작동하지 않을 수 있습니다.
필자가 여기서 지적하는 점은 검색 기능을 사용하는 사용자는 구현 방식과 관련이 없어야한다는 것입니다. 즉, equal_range를 사용 하는지를 알아야합니다.
입력 사항 및 제안 사항은 무엇입니까? 내가 여기서 자세히 설명해 주 었니? 검색 기능을 어떻게 구현 했습니까? 당신이 map::insert
같은 기능을 할 일을 할 것 같은
감사
그렇게 생각하지 않았습니다. 건배! – Tomas