std::map<int,int> mapy;
++mapy[5];
Действительно ли безопасно принять это mapy[5]
всегда будет 1? Я имею в виду, будет mapy[5]
всегда получайте значение по умолчанию 0 прежде '++', даже если не явно объявленный, как в моем коде?
Как только вы обращаетесь к карте с помощью оператора [], если ключ не существует, он добавляется. Вызывается инициализатор по умолчанию типа int - поэтому он получит значение 0.
Да, значение по умолчанию будет по умолчанию для этого типа. Если вам нужно другое значение по умолчанию, вы можете создать класс, который ведет себя как int, но имеет другой конструктор по умолчанию.