지도용 비교기 사용자 정의
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!