4

要素を std::unorder_set に挿入するとき、std::unordered_set::insert の前に std::unordered_set::find を呼び出す価値がありますか? 私の理解では、挿入が成功したかどうかを示すブール値を含む std::pair を返すため、常に insert を呼び出す必要があります。

4

3 に答える 3

1

スレッドセーフに設定し、同時にアクセスした場合、最初の呼び出しfindはほとんど機能しませinsertん。アトミックですが、check-then-act は競合状態の影響を受けやすくなります。

したがって、一般的に、特にマルチスレッドのコンテキストでは、挿入するだけです。

于 2014-04-11T02:25:45.827 に答える
1

単に挿入を試みるのが最善です。そうしないと、ハッシュ バケット内で衝突した要素をハッシュして繰り返し処理する作業が不必要に繰り返されます。

于 2014-04-11T02:23:15.340 に答える