>  기사  >  백엔드 개발  >  STL 맵에서 키 비교를 어떻게 사용자 정의할 수 있나요?

STL 맵에서 키 비교를 어떻게 사용자 정의할 수 있나요?

DDD
DDD원래의
2024-11-03 13:37:02911검색

How Can You Customize Key Comparisons in STL Maps?

맵 키 비교를 위한 비교기 사용자 정의

맵 작업 시 키 비교기의 선택은 컬렉션의 동작에 큰 영향을 미칠 수 있습니다. STL 맵에서 기본 비교기는 자연 순서에 따라 키를 비교합니다. 그러나 이 기본값을 무시하고 키 비교를 위해 사용자 정의 비교기를 지정할 수 있습니다.

사용자 정의 비교기 생성

사용자 정의 비교기를 정의하려면 클래스 또는 구조를 생성하세요. 이는 Operator() 함수를 구현합니다. 이 함수는 비교할 키를 나타내는 두 개의 인수를 사용하고 비교 결과를 나타내는 부울 값을 반환합니다. 예를 들어 문자열 길이로 키를 비교하려면 다음 비교기를 만들 수 있습니다.

<code class="cpp">struct cmpByStringLength {
    bool operator()(const std::string& a, const std::string& b) const {
        return a.length() < b.length();
    }
};

지도에서 사용자 정의 비교기 사용

사용자 정의 비교기가 있으면 , 세 번째 템플릿 인수로 전달하여 지도를 초기화하는 데 사용할 수 있습니다:

<code class="cpp">std::map<std::string, std::string, cmpByStringLength> myMap;</code>

또는 비교기를 지도의 생성자에 전달할 수도 있습니다:

<code class="cpp">std::map<std::string, std::string> myMap(std::less<std::string>(), cmpByStringLength());</code>

기타 정렬 옵션

사용자 정의 비교기를 사용하면 유연성이 제공되지만, 길이를 기반으로 하는 사용자 정의 비교기를 사용하면 동일한 길이의 여러 키를 갖는 기능이 제한될 수 있다는 점에 유의할 가치가 있습니다. 더 복잡한 정렬 메커니즘이 필요한 경우 Boost.MultiIndex 또는 외부 정렬 라이브러리와 같은 대체 데이터 구조 사용을 고려해 보세요.

위 내용은 STL 맵에서 키 비교를 어떻게 사용자 정의할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.