Offenbar ist es möglich, bestellt Karten und Sätze von boost::variant
, wie diese zu haben:baumartige container von boost :: variant - gibt es irgendwelche nachteile?
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";
Ausgang:
1 7
a 3
Allerdings finde ich, dass etwas verdächtig; Ich habe in den Quellcode geschaut, um zu sehen, wie das funktionieren kann, aber habe nicht viel daraus gemacht ... irgendwie müssen die verschiedenen Typen mit operator<
verglichen werden ... was für 2 Typen definiert werden müsste; Abgesehen davon macht der Vergleich verschiedener Typen mit <
für mich keinen Sinn. Daher frage ich mich, ob es einen Haken bei der Verwendung von Karten oder Sets von boost::variant
in Bezug auf die Leistung gibt. Gibt es einen Haken? Oder ist es in Ordnung, Karten oder Sätze von boost::variant
zu haben?