簡體   English   中英

stl :: map of stl :: sets的效率

[英]Efficieny of stl::map of stl::sets

我相信我想使用boost :: icl :: interval_map來解決問題( 這里描述的,如果interval_maps最終有效,我會發布一個完整的答案。)

我想用一個interval_map<unsigned long long, set<foo*>> ,但的boost :: ICL的文件中提到,有潛在的效率問題(下面 )。

我們使用字符串集的區間映射來引入interval_maps,因為它具有教學上的優點。 派對示例用於立即訪問區間圖的基本思想,並在重疊時進行聚合。 對於實際應用程序,不一定建議使用集合的interval_map。 它與std :: sets的std :: map具有相同的效率問題。 雖然使用interval_maps與關聯值的數值和其他有效數據類型有一個很大的領域。

std :: map的std :: sets有哪些效率問題? 我該如何避免它們?

std::map<K, V>std::set<V>都是由指針鏈接的基於節點的容器。 遍歷它們具有很好的復雜性保證(即,每個單獨的操作最多為O(log n))但是實際上你需要相當大的容器以便比較重要,比如std::vector<std::pair<K, V>>特別是當KV是基本類型時。 基於節點的容器的主要性能問題是它們在內存中或多或少地隨機布局,而現代CPU喜歡訪問以某種形式聚集的數據。

當然,像往常一樣,您需要測量在相當實際的數據集上的不同實現之間獲得的時間,以確定哪個數據結構產生最佳性能。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM