我有一个 std::map,我想添加一个有效的键以稍后对其进行迭代,但不给出任何值(稍后将在迭代过程中给出)。
我现在就是这样做的:
std::vector<std::string> valid_keys;
//Fill... Then :
std::map<std::string, float> map;
for(size_t i = 0 ; i < valid_keys.size() ; ++i) {
/*I don't want to do that because in fact I don't use a float type*/
map[valid_keys[i]] = 0.f; //<-
}
//Using :
for(std::map<std::string, float>::iterator it = map.begin() ; it != map.end() ; ++it) {
it->second = 0; //Dummy
}
请问我该怎么做?
预先感谢。
我不完全确定你所说的“不给出任何值”是什么意思,但如果你的意思是不明确分配一个值,那么就这样做
map[valid_keys[i]];
这仍然有效,即如果之前没有具有该键的条目,它会在地图中创建一个新条目。这operator[]
只是返回对该值的引用,以便您可以为其分配一个新值,但请记住它是already已默认构造。
另一方面,如果您想要表达没有有意义的值,并且它可能会或可能不会随后收到有效值,那么请参阅@UncleBens` 的回答 https://stackoverflow.com/questions/3577060/how-to-add-valid-key-without-specifying-value-to-a-stdmap/3577170#3577170.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)