Existe-t-il une structure, classe ou conteneur que je puisse utiliser pour stocker des éléments hétérogènes qui sont sérialisables? Par exemple disons que j'ai un int, un float et un autre objet de classe. Je veux les stocker tous dans un conteneur particulier au moment de l'exécution et les transmettre à travers les classes. Est-ce que C++ donne de telles options.Classe ou conteneur pour stocker des éléments hétérogènes en C++
2
A
Répondre
5
Vous pouvez utiliser un vector
of boost::variant
, par ex.
#include <boost/serialization/vector.hpp>
#include <boost/serialization/variant.hpp>
// note: the above are serializable variants of
// #include <vector>
// #include <boost/variant.hpp>
#include <fstream>
#include <iostream>
#include <boost/archive/text_oarchive.hpp>
#include <boost/archive/text_iarchive.hpp>
#include <algorithm>
#include <iterator>
struct Point {
float x, y;
Point(float x_, float y_) : x(x_), y(y_) {}
Point() : x(0), y(0) {}
private:
friend class boost::serialization::access;
template<class Archive>
void serialize(Archive & ar, const unsigned int version) {
ar & x;
ar & y;
}
};
std::ostream& operator<< (std::ostream& o, const Point& p) {
return o << "{x:" << p.x << ", y:" << p.y << "}";
}
int main() {
std::vector<boost::variant<int, float, Point> > vec;
vec.push_back(12345);
vec.push_back(0.65432f);
vec.push_back(Point(2.5, 6.7));
{
std::ofstream f("1.txt");
{
boost::archive::text_oarchive serializer(f);
serializer << vec;
}
}
{
std::ifstream f("1.txt");
{
std::vector<boost::variant<int, float, Point> > result;
boost::archive::text_iarchive deserializer(f);
deserializer >> result;
std::copy(result.begin(), result.end(),
std::ostream_iterator<boost::variant<int, float, Point> >(std::cout, "\n"));
}
}
return 0;
}
Questions connexes
- 1. performSelector pour les éléments hétérogènes d'un tableau provoquant NSInvalidArgumentException
- 2. Pourquoi devrais-je utiliser un conteneur pour stocker des observateurs?
- 3. Utilisation d'un conteneur STL pour stocker les données Treeview
- 4. comparaisons hétérogènes dans python3
- 5. jquery stocker des propriétés dans des éléments?
- 6. passer des éléments dans la classe C#
- 7. Stl réglable comme conteneur pour C++
- 8. conteneur observable pour C++
- 9. Comment modifier l'état des éléments de conteneur en fonction de l'état du conteneur (WPF/XAML)
- 10. Méthode à instruction unique pour supprimer des éléments du conteneur
- 11. jQuery: Comment stocker des données pour des éléments inexistants?
- 12. Conteneur ou algorithme le plus rapide pour des identifiants uniques réutilisables en C++
- 13. Comparer Conteneur de base de données et conteneur de classe
- 14. C# Conteneur Question
- 15. besoin d'aide avec conteneur pour un article générique en C++
- 16. Où stocker les constantes de classe nommées spécifiques en C++
- 17. Expressions régulières pour trouver des éléments C++?
- 18. C++: conteneur de pointeurs d'origine
- 19. C++ - question conteneur de base
- 20. jQuery rechercher des éléments de nom de classe dans le même conteneur
- 21. Quelle classe de conteneur Qt utiliser pour une liste triée?
- 22. django modèles de proxy queryset hétérogènes
- 23. Réorganisation des éléments dans BindingList en C#?
- 24. C++ conteneur question
- 25. Comment utiliser boost :: fusion :: transformer sur des conteneurs hétérogènes?
- 26. C#: Comment utiliser enum pour stocker des constantes de chaîne?
- 27. Conteneur Flex avec des éléments de taille variable
- 28. Comment utiliser SmartGWT DataSource avec des données hétérogènes
- 29. Classe de spline cubique pour Obj C ou C?
- 30. Où dois-je stocker une référence à mon conteneur DI?