为什么我应该在参数unordered_map之前添加'&'?

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,代码将崩溃.

Ded*_*tor 5

&在用于功能参数的类型intString意味着函数得到的,而不是它的副本到传递的参数的引用.

因此,返回的迭代器.find()和它依次返回的迭代器将指向传递的参数,而不是指向某处不再存在的副本的悬空迭代器.

访问被破坏的对象,特别是如果内存被重新使用,可能会产生各种令人惊讶的结果,这就是它被称为未定义行为(UB)的原因.