2016-03-31 87 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。

然後樹上的深度優先搜索打印出我的預期結果。

相關問題