为什么我应该在unordered_map参数之前添加'&'?
Why I should add '&' before the parameter which is an unordered_map?
unordered_map<int, string>::iterator findElement(unordered_map<int, string> &intString, int index){
return intString.find(index);
}
如果我不&
在intString
之前添加,代码将崩溃。
函数
参数intString
类型中的&
意味着函数获取对传递参数的引用,而不是它的副本。
因此,从.find()
返回并依次返回的迭代器将指向传递的参数,而不是指向不再存在的副本的悬空迭代器。
访问被破坏的对象,特别是如果内存被重新利用,可能会产生各种令人惊讶的结果,这就是为什么它被称为未定义行为 (UB(。
相关文章:
- 可变参数模板与使用元组在参数中添加不同的数据对
- 如何在OMNET++中添加专门的命令行参数?
- 如何将带有参数的愚蠢函数添加到愚蠢的执行器中?
- 为模板参数包添加别名
- 如何使用主参数添加更多堆栈?
- C++中添加参数的沙漏
- 为什么在函数参数前面添加 const 会出错?
- 为什么我们需要在优先级队列声明中添加一个向量作为参数?
- 具有可变参数包的模板化可添加类
- 添加可变参数函数的错误结果
- 在对象序列化期间添加额外参数是否有更好的方法?
- 在C++中,如何将参数添加到"Args&&... args"参数列表中?
- C++添加检查以避免读取两个参数
- 如何添加参数-Fvisibility =默认为cmake
- 我可以为模板类的模板类型添加参数吗?
- 添加参数后"模板参数推断/替换失败"
- 添加参数或添加函数
- Cocos2d-x:在callfuncN_selector中添加参数
- 我想创建一个std::函数,但增量地添加参数
- 向前向声明的模板添加参数