Maison >développement back-end >C++ >Comment puis-je stocker différents types de données dans un seul conteneur C ?
Comment stocker des types de données disparates dans un seul conteneur C
En C, les conteneurs tels que les vecteurs et les cartes contiennent généralement des objets d'un seul type de données. Cependant, il existe des scénarios dans lesquels vous souhaiterez peut-être stocker des objets de plusieurs types dans le même conteneur.
Pour relever ce défi, envisagez d'utiliser Boost.Any. Boost.Any est une classe de modèle qui peut représenter n'importe quel type de données. Vous pouvez stocker des instances de Boost.Any dans un conteneur, ce qui vous permet de contenir des objets de différents types au sein de la même collection.
Voici un exemple de la façon dont vous pouvez utiliser 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>
Une autre option consiste à créer une Union ou une Struct personnalisée. Une union vous permet de stocker différents types de données dans le même emplacement mémoire, tandis qu'une structure peut contenir plusieurs données membres de types différents. Cependant, les unions peuvent avoir un comportement indéfini si l'on accède au mauvais membre, et les structures peuvent être inefficaces si un seul membre est activement utilisé.
En fin de compte, la meilleure approche dépend des exigences et des contraintes spécifiques de votre application. Considérez les avantages et les inconvénients de chaque option pour déterminer la solution la plus appropriée.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!