マップの挿入には2つの方法があります。
m[key] = val;
または
m.insert(make_pair(key, val));
私の質問は、どちらの操作が速いかということです。STL標準では、最初に「キー」がマップに存在しない場合はデフォルト要素を「挿入」し、次に「val」をデフォルト要素に割り当てるため、通常、最初の要素は遅いと言われます。
しかし、「make_pair」があるため、2番目の方法の方が優れているとは思いません。make_pairは、実際には、と比較して「ペア」を作成するための便利な方法pair<T1, T2>(key, val)
です。とにかく、どちらも2つの割り当てを行います。1つは「key」を「pair.first」に割り当て、2つは「val」を「pair.second」に割り当てます。ペアが作成された後、mapは「pair.second」で初期化された要素を挿入します。
したがって、最初の方法は1です。' default construct of typeof(val)
'2.割り当て2番目の方法は1です。割り当て2.' copy construct of typeof(val)
'