Heim > Artikel > Backend-Entwicklung > Wie kann ich heterogene Container in C erstellen?
Heterogene Container in C
Die Grafik, auf die Sie verwiesen haben, zeigt verschiedene STL-Container basierend auf Merkmalen wie feste/variable Größe, Datentyp, Sortierung und Zugriffstyp. Es fehlt jedoch ein Container, der gleichzeitig variable Größe und Heterogenität (Unterbringung verschiedener Datentypen) unterstützt.
In C sind die meisten Container so konzipiert, dass sie mithilfe von Vorlagen Objekte eines bestimmten Typs enthalten. Obwohl Zeiger eine heterogene Speicherung ermöglichen können, stellen sie Einschränkungen dar. Darüber hinaus sind void*-Container weniger typsicher.
Für wirklich heterogene Container, die nicht verwandte Typen speichern können, sollten Sie die folgenden Optionen in Betracht ziehen:
Boost.Any :
Boost.Any bietet eine allgemeine Möglichkeit, jeden Typ zu speichern, sodass Sie Container erstellen können, die eine Mischung aus Ganzzahlen, Zeichenfolgen und noch komplexeren Objekten enthalten.
<code class="cpp">using boost::any; std::list<boost::any> values; values.push_back(42); values.push_back("Hello, world!");</code>
Boost.Variant:
Boost.Variant ähnelt Boost.Any, erfordert jedoch die Angabe der zulässigen Typen zur Kompilierungszeit. Dies erzwingt die Typsicherheit und ermöglicht gleichzeitig eine heterogene Speicherung.
<code class="cpp">using boost::variant; std::vector<boost::variant<int, std::string>> vec; vec.push_back(44); vec.push_back("C++");</code>
Diese Bibliotheken ermöglichen die Erstellung von Containern, die Daten verschiedener Typen flexibel speichern und darauf zugreifen können. Diese Alternativen werden zwar nicht direkt von der STL bereitgestellt, bieten aber Lösungen für die heterogene Datenspeicherung in C.
Das obige ist der detaillierte Inhalt vonWie kann ich heterogene Container in C erstellen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!