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

如果我没有在&之前添加intString,则代码将崩溃。

最佳答案

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

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

访问损坏的对象(尤其是在重新使用内存的情况下)可能会产生各种令人惊讶的结果,这就是为什么将其称为未定义行为(UB)的原因。

10-06 00:39