我需要一個類似C++ std :: map的類。更具體地說,我需要這樣的行爲:
map< string, vector<int> > my_map;
這可能嗎?是否有任何通用的HashTable?
回答
字典是我相信你想要的東西:
Dictionary<String, int> dict = new Dictionary<String, int>();
dict.Add("key", 0);
Console.WriteLine(dict["key"]);
等,等
MSDN:http://msdn.microsoft.com/en-us/library/xfhwa508.aspx
您可以指定更多或更少的任何類型的鍵/值類型。包括另一個字典,一個數組或其他:
Dictionary<String, String[]> dict = new Dictionary<String, String[]>();
因此,這裏Dictionary中的每個元素指向一個字符串數組。
要實現您所需要的(與向量INT),您將需要一個列表作爲值類型:
Dictionary<String, List<int>> dict = new Dictionary<String, List<int>>();
值得一提的是一個字典沒有預定義的順序,而性病::地圖確實。如果順序很重要,您可能希望使用SortedDictionary,這在用法上幾乎相同,但按鍵排序。如果你打算真的迭代字典,這一切都取決於。
但是請注意,如果您使用您創建的類作爲鍵,您將需要正確覆蓋GetHashCode和Equals。
是的,你在問題中寫的聲明是正確的。它將一個字符串映射到一個整數矢量上。然而,std :: map由紅黑樹實現支持,而你的問題表明你需要一個散列表。如果你可以使用boost,你可以嘗試執行unordered_map。這是tr1規範的一部分,並將映射實現爲散列表。標準類型的散列函數已經在boost中實現,所以你不需要擔心這一點。
#include <boost/unordered_map.hpp>
...
boost::unordered_map<std::string, std::vector<int> > my_map;
這取決於你真正需要什麼。 因爲已經說過你使用System.Collections.Generic.Dictionary<Key, Value>
查找行爲,所以相當於std::map<string, std::vector<int> >
會(使用System.Collections.Generic.List<int>
爲vectorequivalent):
Dictionary<string, List<int>> myDictionary = new Dictionary<string, List<int>>();
myDictionary.Add("a", new List<int>());
等 內部字典使用Hashtable的,而性病::地圖使用紅黑樹,所以std :: map是有序的,而Dictionary是無序的。如果你需要一個有序的字典(這將更接近std :: map,你可以使用System.Collections.Generic.SortedDictionary<Key, Value>
。它的用法大致相同,它的用法大致與字典
相同如果你的目標是要替換map,那麼你想'SortedDictionary' ,因爲那也實現了紅黑樹,如果你想要一個哈希表,那麼Dictionary就可以工作了
- 1. Wolfram Mathematica中是否有HashTable結構?
- 2. 是否有任何通道反轉庫?
- 3. 是否有任何的JavaFX
- 4. 是否有任何針對OrientDB爲GraphAPI編寫的通用DAO?
- 5. 是否有任何通用版本的Array.newInstance?
- 6. 是否有任何通用CRUD客戶端應用程序?
- 7. 是否有任何寶石用於存儲用戶通知?
- 8. 使用推送通知服務是否有任何費用?
- 9. 在普通的php(沒有任何框架)上是否有任何i18n庫?
- 10. 當後臺任務結束時,ios是否有任何通知?
- 11. 是如何在Hashtable
- 12. 是否有任何VBScript庫?
- 13. 是否有任何截斷?
- 14. 是否有任何Santizing ModelBinders?
- 15. 是否有任何ePub庫
- 16. 是否有任何通用初始上下文工廠?
- 17. 是否有任何理由通過PyMem_Malloc使用malloc?
- 18. 是否有任何使用PHP通信設備?
- 19. 在Java中是否有任何通用名稱值對?
- 20. 通過VM使用核心服務是否有任何限制
- 21. 是否有任何理由通過fgets + sscanf使用scanf或fscanf
- 22. 通過LINQ.ToList()使用List.AddRange是否有任何好處?
- 23. 是否有任何變通使用在劃線PATCH方法
- 24. 通過LocationManager使用FusedLocationProviderApi是否有任何優勢?
- 25. 當有一個通用的Dictionary類時,是否有任何理由使用Hashtables?
- 26. WinRT是否有任何EventBrokers可用?
- 27. 是否有任何理由使用[:over @:?
- 28. 是否有任何Brew應用商店?
- 29. 是否有任何框架用java
- 30. 是否有任何理由使用isset()?
你需要用什麼語言? – 2009-12-16 13:25:54
@gf-我相信他是爲C#拍攝的 – TStamper 2009-12-16 13:27:46
我相信你的意思是std: :multimap –
KitsuneYMG
2009-12-16 13:31:30