equal_range는 모든 요소가 val과 동일한 한 쌍의 이터레이터 형태로 범위를 반환합니다. val과 같은 값이 발견되지 않으면 빈 범위가 반환되므로 result.first == result.second입니다. equal_range의 조건자가 아닌 버전의 경우 요소의 같음은 operator<에 의해 결정됩니다. equal_range의 술어 버전의 경우 요소의 같음은 pred에 의해 결정됩니다. 다중 맵::equal_range()는 쌍의 거동이 많은 G를 반환하는 C++ STL의 기본 제공 함수입니다. 쌍은 k와 동일한 키가 있는 컨테이너의 모든 요소를 포함하는 범위의 경계를 나타냅니다. 키 K와 일치하지 않는 경우 반환되는 범위는 컨테이너의 내부 비교 개체(key_comp)에 따라 k 를 따라 이동하는 것으로 간주되는 키가 있는 첫 번째 요소를 가리키는 두 이터레이터가 모두 길이 0입니다. equal_range, 즉 범위 오브젝트의 결과는 두 개의 이터레이터 쌍입니다[범위 시작, 범위 끝). 따라서 [range.first, range.second] 이상반복하려고 합니다: equal_range는 범위[i1, i2) 내의 모든 요소가 동일한 키를 갖도록 반복기 i1, i2 쌍을 반환합니다. 따라서 코드 718을 사용하여 모든 도시를 반복하기 위해 equal_range를 호출한 다음 반환된 쌍의 첫 번째 에서 반환된 쌍의 두 번째 도시를 반복합니다.

이 코드를 가지고 있으며 equal_range 메서드가 이터레이터를 반환하는 부분을 이해할 수 없습니다. 범위는 내부에 두 개의 멀티 맵 개체와 쌍 개체를 알고 있지만, 내가 얻을 수없는 것은 `에 대한 (it = range.first; 그것은 != range.second; ++it)`이 있는 이유입니다 – 이것은 정확히 무엇을 의미합니까? std::equal_range는 지정된 값과 동일한 모든 요소가 있는 지정된 범위[첫 번째, 마지막) 내에서 하위 범위를 찾는 데 사용됩니다. 이러한 하위 범위의 초기 및 최종 바인딩을 반환합니다. 스택 오버플로우에 대한 답변을 참여해 주셔서 감사합니다! 값보다 적은 요소가 없는 경우 last가 첫 번째 요소로 반환됩니다. 마찬가지로 값보다 큰 요소가 없는 경우 두 번째 요소 A가 완전히 정렬된 범위가 이러한 기준을 충족함에 따라 마지막이 반환되며 std::p artition에 대한 호출에서 발생하는 범위도 마찬가지입니다. 쌍의 이터레이터는 [range.first, range.second)의 방식으로 검색한 것과 동일한 키가 있는 항목의 범위를 정의합니다. . “귀하의 답변 게시”를 클릭하면 서비스 약관, 개인 정보 보호 정책 및 쿠키 정책에 동의합니다.

Categories: Sin categoría