Hay dos formas de inserción mapa:STL rendimiento del mapa de inserción: [] vs. inserción
m[key] = val;
O
m.insert(make_pair(key, val));
Mi pregunta es, que el funcionamiento es más rápido? La gente suele decir que el primero es más lento, porque el estándar STL al principio 'inserta' un elemento predeterminado si 'clave' no existe en el mapa y luego asigna 'val' al elemento predeterminado.
Pero no veo que la segunda forma sea mejor debido a 'make_pair'. make_pair en realidad es una forma conveniente de hacer 'pair' en comparación con pair<T1, T2>(key, val)
. De todos modos, ambos hacen dos asignaciones, una es asignar 'clave' a 'pair.first' y dos es asignar 'val' a 'pair.second'. Después de crear el par, el mapa inserta el elemento inicializado por 'pair.second'.
Así que la primera manera es 1. '' 2. default construct of typeof(val)
asignación la segunda manera es 1. Tarea 2. '' copy construct of typeof(val)
Ver también: http://stackoverflow.com/q/1594631/78845 – Johnsyweb