2016-04-01 44 views
2

所以在C#中,我有類似下面的內容:C++的等同於C#的字典和列表

Dictionary<string, List<string>> 

什麼是最有效的方式做,在C++?我知道C++有'map'和'list',但是我仍然處於編寫這個函數的僞代碼階段,所以我想知道在C++中是否可以這樣做。如果是這樣,那麼製作等效數據結構的最佳方法是什麼?

感謝

+0

的std ::地圖,的std :: unordered_map – Starl1ght

+0

'STD: :map > –

回答

4

所以我想知道如果這樣的事情是甚至可能在C++

是的。 STL的特點是各種不同的容器:http://www.cplusplus.com/reference/stl/

如果是這樣,那麼製作等效數據結構的最佳方法是什麼?

這取決於您的要求。例如std::vector VS std::list(見here瞭解更多信息)

對於一個簡單的情況下,我只想建議你使用這樣的:

#include <vector> 
#include <map> 
#include <string> 

int main() 
{ 
    std::map<std::string, std::vector<std::string>> map_of_strings; 

    map_of_strings["a"] = { "1", "2", "3" }; 
    map_of_strings["b"] = { "4", "5", "6" }; 
    map_of_strings["c"] = { "7", "8", "9" }; 

    return 0; 
} 
+0

這將只讀取文件中的信息,然後以xml格式將其寫入另一個文件。字典/圖的關鍵字將是外部節點,而位於該字典的「值」位置的列表/矢量將成爲內部節點。問題是,它可能會相當大,所以內存開銷將成爲一個問題。優點是,一旦字典被編寫完成,除了在一個簡單的嵌套循環中寫入xml,它不需要太多的修改(添加,修改等)(對於字典中的每個鍵,寫入所有列表的值)。 –

1

您可以使用:map<string, vector<string>>Map與C#DictionaryVector最接近C#List

如果我們抽象的任何語言了,有:

可調整大小的陣列 - List在C#中,Vector在C++

集合/鍵值對容器 - Dictionary在C#和Map在C++