Apparemment, il est possible d'avoir commandés cartes et jeux de boost::variant
, comme ceci:conteneurs arborescents de boost :: variant - y a-t-il des inconvénients?
typedef boost::variant<std::string, int, bool> key_type;
std::map<key_type, size_t> m;
m.insert(std::make_pair(std::string("a"), 3));
m.insert(std::make_pair(1, 7));
auto x = m.find(1);
std::cout << x->first << " " << x->second << "\n";
x = m.find(std::string("a"));
std::cout << x->first << " " << x->second << "\n";
sortie:
1 7
a 3
Cependant, je trouve cela un peu suspect; J'ai regardé dans le code source pour voir comment cela peut fonctionner, mais je n'en ai pas tiré grand chose ... d'une certaine manière les différents types doivent être comparés avec operator<
... qui devrait être défini pour 2 types; Mis à part cela, comparer différents types avec <
n'a aucun sens en soi pour moi. Par conséquent, je me demande s'il y a un piège à utiliser des cartes ou des ensembles de boost::variant
en termes de performance. Y a-t-il une prise? Ou est-ce correct d'avoir des cartes ou des ensembles de boost::variant
?