【问题标题】:Why I should add '&' before the parameter which is an unordered_map?为什么我应该在 unordered_map 的参数之前添加“&”?
【发布时间】:2018-03-21 02:14:52
【问题描述】:
unordered_map<int, string>::iterator findElement(unordered_map<int, string> &intString, int index){
    return intString.find(index);
}

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

【问题讨论】:

  • 你知道&amp;是什么意思吗?
  • 获取地址?
  • &amp; 在不同的上下文中有 2 个不同的含义。 int *p = &amp;i 正在获取i 的地址。 int &amp;n = i 是一个参考。在这里,你正在做后者
  • 我明白了!谢谢!

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


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2021-08-02
    • 1970-01-01
    • 1970-01-01
    • 2019-09-18
    • 1970-01-01
    • 1970-01-01
    • 2011-04-19
    • 2020-03-08
    相关资源
    最近更新 更多