いくつかの要素を追加して削除するstd::unordered_map
オブジェクトがあるとします。古いオブジェクトを置き換える新しいオブジェクトを作成する以外に、std::vector::shrink_to_fit()
に似た、マップオブジェクトのメモリフットプリントを強制的に減らす方法はありますか?std :: unordered_mapメモリフットプリントを空にした後に減らす
2
A
答えて
1
ノードは必要に応じて割り当てられ、削除されるため、削減できるメモリはバケットリストで使用されるメモリだけです。これは、unordered_map
のresize(0)
(パラメータは使用するバケツの最小数であり、マップに格納されているものの数とマップのmax_load_factor()
に基づいて実際の数は大きくなる可能性があります)を呼び出します。これは、同じバケツで終わるノードの数に応じて、時間がかかる操作である可能性があります。
新しいマップを作成する代わりに、新しいマップに格納されたものに割り当てられた記憶領域が必要になるため、すべての挿入中に再ハッシュが発生する可能性があります(マップのサイズによって異なる)古い地図で使われていたものは解放する必要があります。ノードは、extract
を呼び出して古いマップからノードを削除し、insert
を新しいマップに追加することによって再利用できますが、新しいマップで再ハッシュが発生する可能性があります。
関連する問題
- 1. メモリフットプリントの削減
- 2. ブーストスピリットX3とstd :: unordered_map
- 3. forループとリストからメモリフットプリントを減らす
- 4. std :: pairをキーとしてstd :: unordered_mapを作成する
- 5. Numpy:ランダムなデータでドットプロダクトのメモリフットプリントを減らす
- 6. std :: unordered_mapのキーとしてstd :: tupleを使用する
- 7. std :: unordered_mapで使用されるstd :: arrayをハッシュします。
- 8. google :: dense_hash_mapとstd :: tr1 :: unordered_map?
- 9. std :: unordered_mapの初期化
- 10. std :: unordered_mapヒント付き挿入
- 11. std :: unordered_mapのキーとしてboost :: uuids :: uuid?
- 12. Redis空のインスタンスのメモリフットプリント
- 13. Pythonの空白を減らすには?
- 14. 雑貨レールのメモリフットプリントを減らしてパフォーマンスを向上させますか?
- 15. unordered_mapにカスタムタイプを格納するためにstd :: hashを特化できない
- 16. std :: unordered_mapのstd :: list要素を初期化する
- 17. std :: unordered_mapをなぜstd :: partitionできないのですか?
- 18. 画面をロックした後にアイドルタイムアウトを減らす
- 19. std :: trl :: unordered_mapのstd :: map :: lower_boundに似た同等のstd ::アルゴリズムがありますか?
- 20. std :: unordered_map <std :: string、std :: vector <int>>のベクトルをコピーせずに更新するには?
- 21. std :: map/std :: unordered_mapの安全性を読む
- 22. std :: unordered_mapでstd :: scoped_allocator_adaptorの中でカスタムアロケータを使用
- 23. メディアクエリーが変更されたときに空白を減らす
- 24. std :: list.begin()は大きいリストのために減速します
- 25. のstd :: unordered_mapポインタ/参照の無効
- 26. C++ 98:std :: tr1 :: unordered_mapの初期化
- 27. std :: tr1 :: unordered_map :: operator []の時間効率
- 28. なぜ、__cache_hash_codeは、std :: __ unordered_mapにのみ使用できますか?
- 29. なぜstd :: unordered_mapに予約メソッドがありますか?
- 30. unordered_mapとstd :: stringを辞書順に並べ替え
これのためのアロケータを書くことが過度であるかどうかわかりません。 – Rakete1111
ハッシュマップを縮小するには再ハッシュが必要なため、新しいハッシュマップを作成することはおそらく同じ速さです。 – rustyx