У меня есть класс X, который я хотел бы поместить в карту STL типа std :: map. Карта STL должна где-то хранить X в памяти, поэтому я ищу эффективный (время выполнения и память) способ создания X и его сохранения на карте.
Я заметил, что следующий код, где x - это объект типа X, а stlMap - это карта типа std :: map:
stlMap["test"] = x;
В результате вызывается следующее:
- X конструктор по умолчанию
- X Копировать конструктор
- Конструктор X Copy
- X деструктор
- X деструктор
- X конструктор присваивания
- X деструктор
Почему создается так много X-объектов?
Это неэффективное использование времени и памяти?
Есть ли лучший способ поместить объект на карту? Может быть, изменив карту, чтобы она была картой строк на x *?