我有一个从字符串到字符串的映射,例如,映射有4个条目,键是:a.b.c,a.b.d,a.b,a.e,值分别为1,2,3,4。
std::map<string, string> myMap;
myMap["a.b.c"] = "1";
myMap["a.b.d"] = "2";
myMap["a.b"] = "3";
myMap["a.e"] = "4";
现在我想以层次结构格式构建一个字符串:
string myFunc(const std::map<string, string>& m)
{
//the implementation?
}
然后我测试:
string myString = myFunc(myMap);
myString可能就像:
a(b(c=1, d=2), b=3, e=4)
注意:逗号分隔项的顺序并不重要。
答案 0 :(得分:0)
我没有陷入理想的功能,而是以不同的方式实施:
class TreeItem
{
public:
string name;
string value;
TreeItem* parent;
std::vector<TreeItem*> children;
};
然后在平键上进行标记化以创建链式TreeItem;结果是一棵树,其根是a,有两个孩子,b和e,而b还有两个孩子c和d。
然后树上的深度优先搜索打印出我的预期结果。