我必須搜索一個進程表,它由在給定的一組IP地址上運行的進程的名稱填充。 目前我在C++中使用多進程映射,進程名稱作爲鍵值和IP地址。 有沒有其他有效的數據結構可以完成相同的任務。 也可以通過使用pthreads獲得任何類型的並行性?如果有的話,任何人都可以將我指向正確的方向什麼類型的數據結構可以有效地搜索進程表
回答
您不需要並行訪問數千個條目的RAM中的數據結構。你可以鎖定它(確保當時只有一個進程/線程訪問它),並確保訪問足夠了。 Multimap沒問題。哈希映射雖然會更好。
什麼是您的表的典型查詢?
嘗試使用散列表,它可以更快的大表。
如何存儲名稱和IP? UTF,字符串,char *?葉作爲uint32或字符串?
對於具有大量讀取查詢的只讀結構,您可以從多個線程中受益。
UPD:使用std::unordered_multimap
從#include <tr1/unordered_map>
根據表的大小,你會發現一個哈希表比multimap
容器(與二叉樹實現)更有效。
hash_multimap數據結構實現了散列表STL容器,並且可能對您有用。
是散列表可用在GNU編譯器或Linux下? – gunjit 2010-02-07 04:58:49
它的C++ stdlib,這意味着它可以在標準C++庫所在的地方使用。這實際上意味着所有符合C++標準的編譯器。 – batbrat 2010-02-07 05:17:03
散列圖不是C++的標準(在1998和2003版本中)。它們將被包含在下一個C++標準C++ 0x中。 GCC在它的libstdC++類名unordered_multimap中有一個pre-standard tr1的實現。還有非標準的ext變量:'hash_multimap' – osgx 2010-02-07 05:32:02
- 1. 數據結構排序+搜索有效
- 2. 是否有索引結構(數據結構)或算法可以高效快速地執行鄰近搜索?
- 3. hibernate搜索中geo_point的等效數據類型是什麼?
- 4. 什麼是REBOL結構!數據類型?
- 5. 可以構建什麼類型結構的綁定工作,
- 6. 以樹結構搜索JSON數據
- 7. Trie數據結構和Java中的有效搜索
- 8. deleteMin和按鍵操作搜索的有效數據結構
- 9. 什麼是存儲表格數據結構的最佳類型?
- 10. 這稱爲什麼類型的數據庫表結構?
- 11. 是否有可排序和可搜索的Python數據結構?
- 12. 創建結構的「數據」和「類型」有什麼區別?
- 13. 什麼類型的NoSQL數據庫可以更好地插入非結構化數據?
- 14. 搜索三數據結構
- 15. Python數據類型,它是什麼樣的數據結構?
- 16. 什麼是數據結構添加不同類型的數據?
- 17. 按字母順序搜索的數據結構是什麼?
- 18. 線段搜索的最佳數據結構是什麼?
- 19. 什麼是快速字典搜索的最佳數據結構?
- 20. 什麼類型的數據可以類類型存儲?
- 21. 效率:使用什麼數據結構...?
- 22. 搜索和更新整數值列表的最快數據結構是什麼?
- 23. 更有效地顯示搜索結果?
- 24. 搜索具有類似性質的數據在結構
- 25. 什麼都可以使用數據結構來表示
- 26. 用於高效多參數搜索的數據結構
- 27. 什麼數據結構用於範圍搜索?
- 28. 將谷歌地圖數據加載到可搜索的數據結構
- 29. 數據結構的類型
- 30. 有什麼辦法可以搜索不被ack識別的文件類型?
名字存儲爲字符串 – gunjit 2010-02-07 04:50:14
和典型查詢發現是某個進程正在運行或不..如果運行報告IP地址 – gunjit 2010-02-07 04:50:51
使用EXT /的hash_map文件和類__gnu_cxx :: hash_multimap在GCC 4.1和更早 – osgx 2010-02-07 05:11:04