>  기사  >  백엔드 개발  >  C 맵에서 키 비교기를 재정의하는 방법은 무엇입니까?

C 맵에서 키 비교기를 재정의하는 방법은 무엇입니까?

DDD
DDD원래의
2024-11-03 18:36:02906검색

How to Override the Key Comparator in C   Maps?

맵의 키 비교기 재정의

C에서 표준 맵을 사용하면 키의 기본 비교기(일반적으로 문자열에 대한 사전식)를 사용하여 키 비교가 수행됩니다. 그러나 자체 비교 논리를 정의해야 하는 시나리오도 있습니다.

키 비교 사용자 정의:

기본 비교기를 재정의하려면 사용자 정의 비교기를 지도를 생성할 때 세 번째 템플릿 매개변수입니다. 예를 들어, 문자열 길이를 기준으로 키를 비교하려면:

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

std::map<std::string, std::string, LengthComparator> lengthMap;</code>

맵을 정렬하는 다른 방법:

사용자 정의 비교기를 정의하지 않으려면 다른 방법을 사용하여 지도를 정렬할 수 있습니다:

  • STL 알고리즘: std::sort()와 같은 정렬 알고리즘을 사용하여 지도에서 추출된 쌍 모음을 정렬합니다.
  • 정렬된 컨테이너: 키 값을 기준으로 요소를 자동으로 정렬하는 std::set 또는 std::multiset와 같은 정렬된 컨테이너를 활용합니다.
  • 외부 정렬 라이브러리: Apache Hadoop 또는 Apache Spark와 같이 대규모 데이터 세트를 정렬하기 위해 특별히 설계된 타사 라이브러리를 사용하는 것이 좋습니다.

참고: 키를 길이별로 비교할 때는 다음 사항에 유의하세요. 각 길이의 인스턴스 하나만 맵 내에서 키로 존재할 수 있습니다.

위 내용은 C 맵에서 키 비교기를 재정의하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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