Wie erkennt man STL-Container mithilfe von Typmerkmalen in C?
Oct 26, 2024 am 01:58 AMErkennen von STL-Containern mithilfe von Typmerkmalen
Einführung
Ein Typmerkmal ist ein leistungsstarkes Werkzeug in C, das die Eigenschaften eines Typs zur Kompilierzeit auswertet . In dieser Frage wollen wir ein Typmerkmal (is_vector oder is_container) erstellen, das verschiedene gängige STL-Containertypen unterscheidet.
Lösung für is_vector
Die bereitgestellte Implementierung für is_vector stößt dabei auf einen Fehler Verwenden Sie nicht den Vorlagenparameter U. Um dies zu beheben, finden Sie hier eine überarbeitete Version:
<code class="cpp">template<class T> struct is_vector { static bool const value = false; }; template<class U> struct is_vector<std::vector<U>> { static bool const value = true; };</code>
Verallgemeinerung auf is_container
In Erweiterung des is_vector-Konzepts können wir ein generisches is_container-Merkmal erstellen, das verschiedene identifiziert STL-Containertypen:
<code class="cpp">template<typename T, typename _ = void> struct is_container : std::false_type {}; template<typename... Ts> struct is_container_helper {}; template<typename T> struct is_container< T, std::conditional_t< false, is_container_helper< typename T::value_type, typename T::size_type, typename T::iterator, decltype(std::declval<T>().size()), decltype(std::declval<T>().begin()), decltype(std::declval<T>().end()) >, void > > : public std::true_type {};</code>
Diese verbesserte is_container-Eigenschaft kann angepasst werden, um nach zusätzlichen Container-spezifischen Merkmalen zu suchen, oder auf nur STL-Container beschränkt werden, indem das Vorhandensein bestimmter Mitgliedsfunktionen und -typen überprüft wird.
Das obige ist der detaillierte Inhalt vonWie erkennt man STL-Container mithilfe von Typmerkmalen in C?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heißer Artikel

Hot-Tools-Tags

Heißer Artikel

Heiße Artikel -Tags

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Welche Werte sind von C -Sprachfunktionen zurückgegeben? Was bestimmt den Rückgabewert?

C Sprachfunktionsformat -Buchstaben -Fall -Konvertierungsschritte

GULC: C -Bibliothek von Grund auf neu gebaut

Was sind die Definitionen und Aufrufregeln von C -Sprachfunktionen und was sind die?

eindeutiger Gebrauch und Phrasenfreigabe

Wie funktioniert die C -Standard -Vorlagenbibliothek (STL)?

Wo ist der Rückgabewert der C -Sprachfunktion im Speicher?

Wie benutze ich Algorithmen aus der STL (sortieren, finden, transformieren usw.) effizient?
