P45*_*ent 12 c++ dictionary initialization
假设我有一张地图
std::map<int, double> foo;
是否foo[2] += 3.0;定义了我写作的行为?也就是说,0.0在我的情况下,是否有任何隐式添加的地图元素自动初始化(希望如此)?
如果没有,我是否引入了卡车装载的未定义行为?如果是这样,我可以用分配器做一些时髦的事情来强制执行初始化0.0吗?
是的,它将进行价值初始化(如0.0您的情况).根据cppreference:
返回对映射到等效于key的键的值的引用,如果此类键尚不存在则执行插入.
如果执行插入,则映射值是值初始化的(默认为类类型构造,否则为零初始化),并返回对它的引用.