She*_*ryl 1 c++ iterator reference function c++11
unordered_map<int, string>::iterator findElement(unordered_map<int, string> &intString, int index){
return intString.find(index);
}
Run Code Online (Sandbox Code Playgroud)
如果我&
之前没有添加intString
,代码将崩溃.
的&
在用于功能参数的类型intString
意味着函数得到的,而不是它的副本到传递的参数的引用.
因此,返回的迭代器.find()
和它依次返回的迭代器将指向传递的参数,而不是指向某处不再存在的副本的悬空迭代器.
访问被破坏的对象,特别是如果内存被重新使用,可能会产生各种令人惊讶的结果,这就是它被称为未定义行为(UB)的原因.