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 に答える