所以在C#中,我有類似下面的內容:C++的等同於C#的字典和列表
Dictionary<string, List<string>>
什麼是最有效的方式做,在C++?我知道C++有'map'和'list',但是我仍然處於編寫這個函數的僞代碼階段,所以我想知道在C++中是否可以這樣做。如果是這樣,那麼製作等效數據結構的最佳方法是什麼?
感謝
所以在C#中,我有類似下面的內容:C++的等同於C#的字典和列表
Dictionary<string, List<string>>
什麼是最有效的方式做,在C++?我知道C++有'map'和'list',但是我仍然處於編寫這個函數的僞代碼階段,所以我想知道在C++中是否可以這樣做。如果是這樣,那麼製作等效數據結構的最佳方法是什麼?
感謝
所以我想知道如果這樣的事情是甚至可能在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;
}
這將只讀取文件中的信息,然後以xml格式將其寫入另一個文件。字典/圖的關鍵字將是外部節點,而位於該字典的「值」位置的列表/矢量將成爲內部節點。問題是,它可能會相當大,所以內存開銷將成爲一個問題。優點是,一旦字典被編寫完成,除了在一個簡單的嵌套循環中寫入xml,它不需要太多的修改(添加,修改等)(對於字典中的每個鍵,寫入所有列表的值)。 –
您可以使用:map<string, vector<string>>
。 Map
與C#Dictionary
和Vector
最接近C#List
。
如果我們抽象的任何語言了,有:
可調整大小的陣列 - List
在C#中,Vector
在C++
集合/鍵值對容器 - Dictionary
在C#和Map
在C++
的std ::地圖,的std :: unordered_map – Starl1ght
'STD: :map> –