unordered_map<int, string>::iterator findElement(unordered_map<int, string> &intString, int index){
return intString.find(index);
}
如果我不在&
之前添加intString
,代码就会崩溃。
答案 0 :(得分:5)
函数参数&
的类型中的intString
表示函数获取对传递参数的引用,而不是它的副本。
因此,从.find()
返回并且依次返回的迭代器将指向传递的参数,而不是指向某个不再存在的副本的悬空迭代器。
访问被破坏的对象,特别是如果重新使用内存,可能会产生各种令人惊讶的结果,这就是为什么它被称为 Undefined Behavior(UB)。