Heim >Backend-Entwicklung >C++ >Können C-Container Daten verschiedener Typen speichern?
Heterogene Container in C
Bei der STL-Containerklassifizierung bleiben einige Anforderungen unerfüllt, nämlich variable Größe und Heterogenität (Daten unterschiedlichen Typs) . Es ist berechtigt zu fragen, ob C Lösungen für diesen Anwendungsfall bietet.
Normalerweise sind C-Container für die Aufnahme von Objekten eines einzelnen Typs konzipiert, Sie können jedoch Zeiger oder boost::any verwenden, um verschiedene Typen aufzunehmen:
Zeiger verwenden:
Sie können einen Container mit Zeigern auf den Basistyp speichern, sodass Sie von diesem Typ abgeleitete Objekte speichern können:
<code class="cpp">std::vector<MyBaseType*>;</code>
Verwenden von boost::any:
Boost bietet boost::any, mit dem Sie Objekte jeglicher Art sicher speichern können:
<code class="cpp">using boost::any_cast; typedef std::list<boost::any> many;</code>
Sie können sie dann verwenden any_cast, um die Objekte in die gewünschten Typen umzuwandeln.
Verwendung von boost::variant:
Boost::variant ist eine weitere Option, mit der Sie einen Satz zulässiger Elemente angeben können Typen:
<code class="cpp">std::vector<boost::variant<unsigned, std::string>>;</code>
Es ist jedoch wichtig zu beachten, dass boost::any und boost::variant im Vergleich zu Standard-STL-Containern einen gewissen Leistungs- und Speicheraufwand haben.
Das obige ist der detaillierte Inhalt vonKönnen C-Container Daten verschiedener Typen speichern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!