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

Why I should add '&' before the parameter which is an unordered_map?

本文关键字:添加 参数 我应该 unordered map 为什么      更新时间:2023-10-16
unordered_map<int, string>::iterator findElement(unordered_map<int, string> &intString, int index){
    return intString.find(index);
}

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

函数

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

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

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