C++のrehash()
とメソッドの違いは何ですか? なぜ2つの異なる方法が必要なのですか?reserve()
unordered_map
質問する
4182 次
2 に答える
13
違いは目的にありますが、どちらも似たようなことをしています。
rehash
既存のマップを取得し、新しいサイズのバケットを再構築し、プロセスで再ハッシュして、要素を新しいバケットに再配布します。reserve
予約された数を超えて要素を挿入しない場合、再ハッシュが行われないことを保証します(つまり、イテレータは有効なままです)。
これらは、関連はあるものの、2つの多少異なるものです。rehash
保証を与えるものでreserve
はなく、再ハッシュの目的を表すものでもありません。rehash
マップが非効率的であると思われる場合、およびreserve
多くの挿入の準備をしている場合に使用します。
@Xeoが指摘しているように、マップの許容負荷率を考慮に入れると、これreserve
は単なるラッパーです。rehash
于 2013-02-13T10:26:21.033 に答える