Conteneurs hétérogènes en C
Dans la classification des conteneurs STL, certaines exigences restent non satisfaites, à savoir de taille variable et hétérogènes (données de types différents) . Il est raisonnable de se demander si C fournit des solutions pour ce cas d'utilisation.
En règle générale, les conteneurs C sont conçus pour contenir des objets d'un seul type, mais vous pouvez utiliser des pointeurs ou boost::any pour s'adapter à différents types :
Utilisation de pointeurs :
Vous pouvez stocker un conteneur de pointeurs vers le type de base, vous permettant de contenir des objets dérivés de ce type :
<code class="cpp">std::vector<MyBaseType*>;</code>
Utiliser boost::any:
Boost fournit boost::any, qui vous permet de stocker des objets de tout type en toute sécurité :
<code class="cpp">using boost::any_cast; typedef std::list<boost::any> many;</code>
Vous pouvez ensuite utiliser any_cast pour convertir les objets dans les types souhaités.
Utilisation boost::variant:
Boost::variant est une autre option qui vous permet de spécifier un ensemble de types autorisés :
<code class="cpp">std::vector<boost::variant<unsigned, std::string>>;</code>
Cependant, il est important de noter que boost : :any et boost::variant ont des performances et une surcharge de mémoire par rapport aux conteneurs STL standard.
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!