>백엔드 개발 >C++ >키를 길이별로 정렬하기 위해 C에서 맵의 비교기를 어떻게 사용자 정의할 수 있나요?

키를 길이별로 정렬하기 위해 C에서 맵의 비교기를 어떻게 사용자 정의할 수 있나요?

Susan Sarandon
Susan Sarandon원래의
2024-11-04 08:02:02551검색

How can I customize the comparator for a map in C   to sort keys by their length?

지도용 비교기 사용자 정의

C에서 std::map은 비교기를 사용하여 요소를 정렬합니다. 기본적으로 맵은 보다 작음 연산자(<)를 사용하여 키를 비교합니다. 그러나 사용자 정의 비교기를 제공하여 이 기본 동작을 재정의할 수 있습니다.

이 질문에서는 키를 알파벳순이 아닌 길이별로 정렬하도록 맵의 비교기를 사용자 정의하는 방법에 대해 설명합니다. 해결책은 다음과 같습니다.

사용자 정의 클래스를 사용하는 솔루션

std::map은 최대 4개의 템플릿 유형 인수를 허용하며 세 번째 인수는 비교기입니다. 다음은 문자열 길이를 기반으로 비교기를 구현하는 사용자 정의 클래스의 예입니다.

<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;</p>
<p><strong>생성자 인수를 사용한 솔루션</strong></p>
<p>또는 비교기를 지도의 생성자에 전달할 수도 있습니다. 이 구문은 이전 예제와 동일합니다.</p>
<pre class="brush:php;toolbar:false"><code class="cpp">std::map<std::string, std::string, cmpByStringLength> myMap(cmpByStringLength());</code>

참고: 길이별로 비교할 때 각 길이의 문자열 하나만 맵에 키로 존재할 수 있습니다.

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

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