Heim >Backend-Entwicklung >C++ >Wie verbessern transparente Komparatoren heterogene Suchvorgänge in assoziativen C 14-Containern?
Transparente Komparatoren in C 14
C 14 führte eine wesentliche Änderung an assoziativen Containern ein, da die Elementfunktionsvorlagen find, count, Lower_bound, Upper_bound und equal_range erfordern jetzt einen transparenten Komparator, um an der Überlastung teilzunehmen Auflösung.
Zweck transparenter Komparatoren
Transparente Komparatoren zielen darauf ab, das Problem der heterogenen Suche in assoziativen Containern zu lösen. Vor C 14 konnten assoziative Container nur eine Suche mit einem Schlüssel des genauen Typs als Schlüssel des Containers durchführen. In vielen Szenarien ist es jedoch wünschenswert, die Suche mit Schlüsseln zu ermöglichen, die in den Schlüsseltyp des Containers konvertierbar sind.
Beispiel für einen transparenten Komparator
Das folgende Beispiel veranschaulicht ein transparenter Komparator:
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; };
Dieser Komparator kann mit heterogenen Typen verwendet werden, da er beliebige Argumenttypen akzeptiert und diese einfach weiterleitet zum Vergleichsoperator.
Auswirkungen auf Standardcontainer
Standardmäßig verwenden Standardcontainer keine transparenten Komparatoren. Durch die explizite Verwendung von std::less<> oder einem anderen transparenten Komparator beim Instanziieren eines assoziativen Containers kann die neue Funktionalität aktiviert werden.
Lösung des Problems
Transparente Komparatoren ermöglichen es assoziativen Containern, eine Suche mit Schlüsseln durchzuführen die in den Schlüsseltyp des Containers konvertierbar sind. Dies erweitert die Flexibilität und Nützlichkeit assoziativer Container erheblich, insbesondere in Szenarien, in denen eine heterogene Suche erforderlich ist.
Fazit
Die Einführung transparenter Komparatoren in C 14 bietet eine leistungsstarke Mechanismus zur heterogenen Suche in assoziativen Containern. Durch die Verwendung transparenter Komparatoren können Entwickler die Flexibilität und den Komfort nutzen, die sie bieten.
Das obige ist der detaillierte Inhalt vonWie verbessern transparente Komparatoren heterogene Suchvorgänge in assoziativen C 14-Containern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!