Construtores de valor de mapa STL

Eu tenho uma classe X que gostaria de colocar em um mapa STL do tipo std :: map. Um mapa STL precisa ter o X armazenado na memória em algum lugar, então estou procurando uma maneira eficiente (tempo de execução e memória) de criar o X e armazená-lo no mapa.

Notei que o código a seguir, em que x é um objeto do tipo X e stlMap é um mapa do tipo std :: map:

stlMap["test"] = x;

Resultados no seguinte sendo chamado:

X construtor padrãoConstrutor X CopyConstrutor X CopyX destruidorX destruidorConstrutor de atribuição XX destruidor

Por que tantos objetos X estão sendo criados?

É um uso ineficiente de tempo e memória?

Existe uma maneira melhor de colocar um objeto em um mapa? Talvez alterar o mapa para ser um mapa de cadeias de caracteres para x *?

questionAnswers(5)

yourAnswerToTheQuestion