使用[]运算符访问std::unordered_map的元素会插入新元素:
std::unordered_map<std::string, uint32_t> umap = {
{"Thomas", 1},
{"Frank", 5},
{"Lisa", 7}
};
// umap.size() is 3
uint32_t id = umap["Lisa"];
// umap.size() is 3
id = umap["Randy"]; // key "Randy" doesn't exist
// umap.size() is 4
我天真地假设[]运算符在没有右手分配的情况下将表现为只读。在访问密钥之前,是否需要通过
count()
或find()
检查密钥是否存在? 最佳答案
是的,您必须使用find
进行检查:
if (umap.find("Randy") == umap.end()) // does not exist
关于c++ - 如何在不插入的情况下访问(检查)std::unordered_map的元素?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22998300/