我正在閱讀這篇文章,據我所知,它unordered_map實際上在元素數量 存盤桶數量方面呈線性關系。
所以,比方說,我有代碼,
將任意數量的元素添加到
std::unordered_map然后
clear()_std::unordered_map重復多次。
如果我在整個執行的任何時候(在步驟 1 中)有很多元素,那么clear時間也會在未來繼續進行,從而使代碼變慢。
但是,同樣的問題也存在std::map嗎?
謝謝
uj5u.com熱心網友回復:
std::map::clear() 什么時候會比 std::unordered_map::clear() 更快?
兩者都具有線性漸近復雜度。您可以同時使用這兩種方法來計時您的代碼,以查看其中一種是否明顯更快。
請注意,如果元素的解構式不平凡,則clear所有容器都具有線性復雜度。如果解構式是微不足道的,那么唯一具有小于線性復雜度的標準容器clear是std::vectorand std::basic_string。
關于以下情況:
- 將容器變大
- 清除
- 插入幾個
- 清除
后清的成本高,適用于std::unordered_map復制不是問題std::map。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/476900.html
下一篇:從檔案到字典的Python串列
