Maison > développement back-end > C++ > le corps du texte

Comment puis-je stocker différents types de données dans un seul conteneur C ?

Linda Hamilton
Libérer: 2024-10-26 08:55:29
original
194 Les gens l'ont consulté

How can I store different data types in a single C   container?

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>
Copier après la connexion

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!

source:php.cn
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!