So speichern Sie unterschiedliche Datentypen in einem einzelnen C-Container
In C enthalten Container wie Vektoren und Karten normalerweise Objekte eines einzelnen Datentyp. Es gibt jedoch Szenarien, in denen Sie möglicherweise Objekte mehrerer Typen im selben Container speichern möchten.
Um dieser Herausforderung zu begegnen, sollten Sie Boost.Any verwenden. Boost.Any ist eine Vorlagenklasse, die jeden Datentyp darstellen kann. Sie können Instanzen von Boost.Any in einem Container speichern, wodurch Sie Objekte unterschiedlichen Typs in derselben Sammlung speichern können.
Hier ist ein Beispiel für die Verwendung von Boost.Any:
<code class="cpp">#include <boost/any.hpp> #include <vector> int main() { std::vector<boost::any> myContainer; int x = 5; std::string y = "Hello"; double z = 3.14; // Add objects of different types to the container myContainer.push_back(boost::any(x)); myContainer.push_back(boost::any(y)); myContainer.push_back(boost::any(z)); // Retrieve objects from the container and cast them to their original types int recoveredX = boost::any_cast<int>(myContainer[0]); std::string recoveredY = boost::any_cast<std::string>(myContainer[1]); double recoveredZ = boost::any_cast<double>(myContainer[2]); // Use the recovered objects std::cout << recoveredX << std::endl; std::cout << recoveredY << std::endl; std::cout << recoveredZ << std::endl; return 0; }</code>
Eine andere Möglichkeit besteht darin, eine benutzerdefinierte Union oder Struktur zu erstellen. Mit einer Union können Sie verschiedene Datentypen am selben Speicherort speichern, während eine Struktur mehrere Datenelemente unterschiedlicher Typen enthalten kann. Gewerkschaften können jedoch undefiniertes Verhalten zeigen, wenn auf das falsche Mitglied zugegriffen wird, und Strukturen können ineffizient sein, wenn nur ein Mitglied aktiv verwendet wird.
Letztendlich hängt der beste Ansatz von den spezifischen Anforderungen und Einschränkungen Ihrer Anwendung ab. Berücksichtigen Sie die Vor- und Nachteile jeder Option, um die am besten geeignete Lösung zu ermitteln.
Das obige ist der detaillierte Inhalt vonWie kann ich verschiedene Datentypen in einem einzigen C-Container speichern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!