両方のコンテナのドキュメントには、emplace()関数が要素を所定の位置に構築すると記載されていますが、要素が構築される前に、新しい要素の場所をどのように知るのでしょうか。
たとえば、unordered_setは、ハッシュ値に従って要素を配置します。unordered_setは、要素が構築される前に、その要素のハッシュ値をどのように知るのですか?
emplace関数は、右辺値を取り、新しい要素の位置を計算し、オブジェクトを移動することを目的としているのではないかと思いましたが、insert()でも同じことができます。
仕様でどのように機能するかは正確には指定されていませんが、一般的には、データ構造内部ノードオブジェクト(値を含むrbツリーノードまたはハッシュバケットノード)が引数から構築され、そのノードは次のようになります。データ構造にリンクされ(setのrb-treeに、unordered_setのハッシュバケットに)、値がすでに存在する場合(したがって追加されない場合)、ノードオブジェクトは破棄されます。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加