Heim > Backend-Entwicklung > C++ > Wie ermöglichen transparente Komparatoren eine heterogene Suche in assoziativen C-Containern?

Wie ermöglichen transparente Komparatoren eine heterogene Suche in assoziativen C-Containern?

DDD
Freigeben: 2024-12-23 02:55:13
Original
154 Leute haben es durchsucht

How Do Transparent Comparators Enable Heterogeneous Lookup in C   Associative Containers?

Transparente Komparatoren für assoziative C-Container

Das Konzept transparenter Komparatoren verstehen

In C 14. Assoziative Container führten ein neues Konzept ein, das als „transparente Komparatoren“ bekannt ist. Gemäß dem Standard nehmen die Member-Funktionsvorlagen find, count, Lower_bound, Upper_bound und equal_range nur dann an der Überladungsauflösung teil, wenn der Typ Compare::is_transparent vorhanden ist.

Ein transparenter Komparator ist ein Typ, der ein verschachteltes is_transparent definiert Typ. Dieser Typ signalisiert dem assoziativen Container, dass er den Komparator für die heterogene Suche als transparent betrachten soll. Dadurch kann der Container nun Vergleiche zwischen dem Schlüsseltyp des Containers und verschiedenen Typen durchführen, die mit dem Schlüsseltyp vergleichbar sind.

Vorteile transparenter Komparatoren

Transparente Komparatoren Lösen Sie das Problem der heterogenen Suche in assoziativen Containern. Traditionell konnten Container nur mit Schlüsseln durchsucht werden, die vom gleichen Typ waren wie der Schlüsseltyp des Containers. Mit transparenten Komparatoren können Container mit Werten durchsucht werden, die mit dem Schlüsseltyp vergleichbar, aber nicht unbedingt vom gleichen Typ sind.

Transparente Komparatoren implementieren

C 14 bietet a Bibliotheksvorlage namens less, die zum Definieren eines transparenten Komparators verwendet werden kann. Die Less-Vorlage verfügt über eine Standardimplementierung, die auf void spezialisiert ist und den Vergleich beliebiger Typen ermöglicht. Durch die Angabe von std::less, wobei Cmp ein transparenter Komparator ist, können assoziative Container eine heterogene Suche ermöglichen.

Auswirkungen auf Standardcontainer

Die Einführung Die Verwendung transparenter Komparatoren ändert das Verhalten assoziativer Container nur dann, wenn ein transparenter Komparator verwendet wird. Standardmäßig behalten Container ihr ursprüngliches Verhalten bei. Bei Verwendung eines transparenten Komparators wie std::less erhält der Container die Fähigkeit, eine heterogene Suche durchzuführen.

Im bereitgestellten Beispiel std::set hätte einen transparenten Komparator, der eine heterogene Suche ermöglicht, während std::set> würde nicht.

Das obige ist der detaillierte Inhalt vonWie ermöglichen transparente Komparatoren eine heterogene Suche in assoziativen C-Containern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage