2
显然,这是可能有有序地图和套boost::variant
,像这样:boost :: variant树状容器 - 有没有什么缺点?
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";
输出:
1 7
a 3
不过,我觉得有点可疑的;我查看了源代码,看看它是如何工作的,但是没有得到太多的结果...不知怎的,不同的类型必须与operator<
进行比较......这需要为任何两种类型定义;除此之外,与<
比较不同类型本身对我来说是没有意义的。因此,我想知道是否有在性能方面使用地图或套boost::variant
。有没有抓住?或者可以使用地图或套件boost::variant
?