使用 [ ] 运算符访问 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()
是否存在密钥来检查它,或者是否有替代方法?