我为什么要添加'&'在参数之前是unordered_map?

时间:2018-03-21 02:14:52

标签: c++ function c++11 reference iterator

unordered_map<int, string>::iterator findElement(unordered_map<int, string> &intString, int index){
    return intString.find(index);
}

如果我不在&之前添加intString,代码就会崩溃。

1 个答案:

答案 0 :(得分:5)

函数参数&的类型中的intString表示函数获取对传递参数的引用,而不是它的副本。

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

访问被破坏的对象,特别是如果重新使用内存,可能会产生各种令人惊讶的结果,这就是为什么它被称为 Undefined Behavior(UB)