10

C++のrehash()とメソッドの違いは何ですか? なぜ2つの異なる方法が必要なのですか?reserve()unordered_map

4

2 に答える 2

13

違いは目的にありますが、どちらも似たようなことをしています。

  • rehash既存のマップを取得し、新しいサイズのバケットを再構築し、プロセスで再ハッシュして、要素を新しいバケットに再配布します。

  • reserve予約された数を超えて要素を挿入しない場合、再ハッシュが行われないことを保証します(つまり、イテレータは有効なままです)。

これらは、関連はあるものの、2つの多少異なるものです。rehash保証を与えるものでreserveはなく、再ハッシュの目的を表すものでもありません。rehashマップが非効率的であると思われる場合、およびreserve多くの挿入の準備をしている場合に使用します。

@Xeoが指摘しているように、マップの許容負荷率を考慮に入れると、これreserveは単なるラッパーです。rehash

于 2013-02-13T10:26:21.033 に答える