C++ 为什么我要添加'&';在参数之前,该参数是无序的_映射? unordered_-map::迭代器findElement(unordered_-map&intString,int-index){ 返回intString.find(索引); }
如果我不在C++ 为什么我要添加'&';在参数之前,该参数是无序的_映射? unordered_-map::迭代器findElement(unordered_-map&intString,int-index){ 返回intString.find(索引); },c++,function,c++11,reference,iterator,C++,Function,C++11,Reference,Iterator,如果我不在intString之前添加&,代码将崩溃。函数参数intString的类型中的&表示函数获取对传递参数的引用,而不是它的副本 因此,从.find()返回并依次返回的迭代器将指向传递的参数,而不是指向不再存在的副本的悬空迭代器 访问被破坏的对象,特别是如果内存被重新使用,可能会产生各种令人惊讶的结果,这就是为什么它被称为未定义行为(Undefined Behavior,UB)。你知道&的意思吗?获取地址?&在不同的上下文中有两种不同的含义int*p=&i正在获取i的地址int&n=i是一
intString
之前添加&
,代码将崩溃。函数参数intString
的类型中的&
表示函数获取对传递参数的引用,而不是它的副本
因此,从.find()
返回并依次返回的迭代器将指向传递的参数,而不是指向不再存在的副本的悬空迭代器
访问被破坏的对象,特别是如果内存被重新使用,可能会产生各种令人惊讶的结果,这就是为什么它被称为未定义行为(Undefined Behavior,UB)。你知道
&
的意思吗?获取地址?&
在不同的上下文中有两种不同的含义int*p=&i
正在获取i
的地址int&n=i
是一个参考。来,你在做latterI,明白了!谢谢
unordered_map<int, string>::iterator findElement(unordered_map<int, string> &intString, int index){
return intString.find(index);
}