Emplace: 右辺値参照を利用して、作成済みの実際のオブジェクトを使用します。これは、コピーまたは移動コンストラクターが呼び出されないことを意味し、LARGE オブジェクトに適しています! O(log(N)) 時間。
挿入: 標準の左辺値参照と右辺値参照のオーバーロード、挿入する要素のリストへの反復子、および要素が属する位置に関する「ヒント」があります。「ヒント」反復子を使用すると、挿入にかかる時間を一定時間に短縮できます。それ以外の場合は、O(log(N)) 時間になります。
Operator[]: オブジェクトが存在するかどうかを確認し、存在する場合はこのオブジェクトへの参照を変更し、存在しない場合は、指定されたキーと値を使用して 2 つのオブジェクトで make_pair を呼び出し、insert 関数と同じ作業を行います。これは O(log(N)) 時間です。
make_pair: ペアを作る以上のことはしません。
標準に emplace を追加する「必要」はありませんでした。c++11 では && 型の参照が追加されたと思います。これにより、移動セマンティクスの必要性がなくなり、特定のタイプのメモリ管理の最適化が可能になりました。特に、右辺値参照。オーバーロードされた insert(value_type &&) 演算子は in_place セマンティクスを利用しないため、効率が大幅に低下します。右辺値参照を処理する機能を提供しますが、オブジェクトの適切な構築という主要な目的を無視します。