Maison > développement back-end > C++ > C peut-il stocker des données de différents types dans un seul conteneur ?

C peut-il stocker des données de différents types dans un seul conteneur ?

DDD
Libérer: 2024-11-06 03:41:02
original
375 Les gens l'ont consulté

Can C   Store Data of Different Types in a Single Container?

Conteneurs hétérogènes en C

Question :

Le graphique de classification des conteneurs STL suggère qu'il n'y a pas de conteneur STL qui soit à la fois de taille variable et hétérogène. Est-ce que C manque d'une solution pour stocker des données de différents types ?

Réponse :

Bien que les conteneurs C soient généralement conçus pour contenir des objets d'un seul type, il existe des moyens de stocker différents types de données :

  • Pointeurs : Utiliser un conteneur de pointeurs vers des objets d'une base commune classe, vous permettant de stocker des objets de différents types dérivés.
  • boost::any: Stockez des objets de n'importe quel type dans un conteneur. Cela utilise une approche de métaprogrammation de modèles pour gérer différents types en toute sécurité.
  • boost::variant: Similaire à boost::any, mais nécessite de spécifier les types autorisés au moment de la compilation.

Exemple de code :

<code class="cpp">#include <list>
#include <boost/any.hpp>

using boost::any_cast;
typedef std::list<boost::any> many;

int main() {
    many values;
    append_int(values, 10);
    append_string(values, "Hello");

    if (is_int(values.front())) {
        int number = any_cast<int>(values.front());
        std::cout << number << std::endl;
    }

    return 0;
}</code>
Copier après la connexion

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!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal