使用字符串键和字符串/整数/字典值实现嵌套字典的最简单方法是什么?
到目前为止我尝试过的很奇怪:
boost::fusion::map<std::string, boost:variant<std::string, int, boost::fusion::map<std::string, boost:variant<std::string, int>>>>
这看起来深度为 2,而且看起来肯定行不通。 即使可以,我也对如何使用它感到困惑。
有什么想法吗?
最佳答案
你可以这样定义它,
template<int N> struct my_map {
typedef boost::variant<int, std::string, typename my_map<N-1>::type> value_type;
typedef std::map<std::string, value_type> type;
};
template<> struct my_map<1> {
typedef boost::variant<int, std::string> value_type;
typedef std::map<std::string, value_type> type;
};
可能用 boost::fusion::map
替换 std::map
,但也许你最好采用更简单的设计,使用(智能)指针当您需要终止时,链式条目将变成 nullptr
。
关于C++ boost : Simple nested dictionary?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22265142/