void test(const unordered_map<int,int> &um){
if(um[1]){
//一段测试代码
}
}
上述代码将不能通过编译。
原因:map的[]运算符会在索引项不存在的时候自动创建一个对象,而常量不能改变。
解决办法:使用迭代器替换即可,如下例所示。
void test(const unordered_map<int,int> &um) {
unordered_map<int, int>::const_iterator it = um.begin();
for (; it != um.end(); ++it) {
//balabala
}
}
注意:
因为传入的um参数是常量类型的,因此um.begin()也是常量指针,因此只能将其赋值给常量指针const_iterator。