2016-03-31 57 views
0

我有一个从字符串到字符串的映射,例如,地图有4个条目,关键字是:abc,abd,ab,ae,值为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

@SamVarshavchik,好吧,只是一些大脑风暴....我已经以面向对象的方式实现(请参阅我自己的帖子),而不是停留在单个函数上。不管怎么说,还是要谢谢你 – milesma

回答

0

不是就死在理想的功能,我用不同的方式来实现:

class TreeItem 
{ 
public: 
    string name; 
    string value; 
    TreeItem* parent; 
    std::vector<TreeItem*> children; 
}; 

然后做的平键创建链接TreeItems一个记号化;结果是一棵树,其根是一个,有两个孩子,b和e,而b又有两个孩子c和d。

然后树上的深度优先搜索打印出我的预期结果。

相关问题