맵 키 비교를 위한 비교기 사용자 정의
맵 작업 시 키 비교기의 선택은 컬렉션의 동작에 큰 영향을 미칠 수 있습니다. 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!