假设容器值将自动创建是不好的做法吗?

Is it bad practise to assume a container value will get automatically created?

本文关键字:创建 假设      更新时间:2023-10-16

,假设我在C 中有一个带有字符串作为键的键和ints作为值的地图,我将在从某些来源读取时添加对(即:我无法初始化代码中的地图是因为我不知道将从源中读取哪些键(。使用映射[" somekey"]。

我的意思是这样(不是真实的代码,只是一个示例(:

map<string, set<int>> myMap;
while (reading_from_source(something)){
    string key=obtainKeyFromSource();
    myMap[key].insert(obtainIntFromSource());
}

令我担心的是,我只说"将有一张地图,它将以值为价值",但是我从来没有真正创建这些集合,我才开始向它们插入元素。

如果这是不好的做法,那么正确的方法是什么?

进行myMap[key]时,如果键不存在,则键data对将为您创建。因此set将永远存在。

来自此std::map::operator[]参考:

返回对映射到相当于键的键的值的引用,如果尚不存在此类密钥,则执行插入。

[强调矿山]

所以我对问题的回答是,这不是不好的做法,这是正确的方法。