>백엔드 개발 >C++ >투명 비교기는 C 14 연관 컨테이너에서 이종 조회를 어떻게 향상합니까?

투명 비교기는 C 14 연관 컨테이너에서 이종 조회를 어떻게 향상합니까?

Linda Hamilton
Linda Hamilton원래의
2024-12-26 14:48:10898검색

How Do Transparent Comparators Enhance Heterogeneous Lookups in C  14 Associative Containers?

C 14의 투명 비교기

C 14에서는 멤버 함수 템플릿이 find, count, lower_bound, upper_bound 및 equal_range는 이제 오버로드에 참여하기 위해 투명 비교기가 필요합니다.

투명 비교기의 목적

투명 비교기는 연관 컨테이너에서 이질적인 조회 문제를 해결하는 것을 목표로 합니다. C 14 이전에는 연관 컨테이너가 컨테이너의 키와 정확히 동일한 유형의 키를 사용하여 검색을 수행할 수 있었습니다. 그러나 많은 시나리오에서는 컨테이너의 키 유형으로 변환 가능한 키를 사용하여 검색을 허용하는 것이 바람직합니다.

투명 비교기의 예

다음 예는 설명합니다. 투명한 비교기:

template <>
struct less<> {
    template <class T, class U>
    auto operator()(T&& t, U&& u) const
        -> decltype(std::forward<T>(t) < std::forward<U>(u));
    typedef *unspecified* is_transparent;
};

이 비교기는 모든 유형을 허용하므로 이종 유형과 함께 사용할 수 있습니다. 인수 유형을 지정하고 이를 비교 연산자에 전달합니다.

표준 컨테이너에 미치는 영향

기본적으로 표준 컨테이너는 투명 비교자를 사용하지 않습니다. 그러나 명시적으로 std::less<> 또는 연관 컨테이너를 인스턴스화할 때 다른 투명 비교기를 사용하면 새로운 기능을 활성화할 수 있습니다.

문제 해결

투명 비교기를 사용하면 연관 컨테이너가 키를 사용하여 검색을 수행할 수 있습니다. 컨테이너의 키 유형으로 변환할 수 있습니다. 이는 특히 이종 조회가 필요한 시나리오에서 연관 컨테이너의 유연성과 유용성을 크게 확장합니다.

결론

C 14에 투명 비교기를 도입하면 강력한 연관 컨테이너에서 이질적인 조회를 위한 메커니즘입니다. 개발자는 투명한 비교기를 활용하여 비교기가 제공하는 유연성과 편의성을 활용할 수 있습니다.

위 내용은 투명 비교기는 C 14 연관 컨테이너에서 이종 조회를 어떻게 향상합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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