【问题标题】:vector<int &> not compiling [duplicate]vector<int &> 不编译[重复]
【发布时间】:2014-10-04 23:41:36
【问题描述】:

问题来自以下代码:

vector<int &> one;  //compile failed

我很困惑为什么代码无法编译。

【问题讨论】:

  • 您不能将引用放入容器中。使用std::reference_wrapper
  • 引用是不可复制和不可移动的。

标签: c++ vector reference


【解决方案1】:

您不能直接拥有引用向量。

但是您可以使用std::reference_wrapper 来实现您所寻求的结果。

【讨论】:

  • 感谢您的回答。当IDE(VS2008)告诉我代码编译失败时,我知道“我不能直接拥有引用向量”,这也是你的答案。我想知道根本原因。谢谢。
  • “因为标准是这样说的”足够好吗? “容器是存储其他对象的对象。” §23.2.1 [container.requirements.general] 引用不是对象。
  • 谢谢。但是指针也不是对象。你能帮帮我吗?
  • 指针确实是一个对象。 “一个对象是一个存储区域。” §1.8 [intro.object]。因此,引用不是对象,因为“[i]t 未指定引用是否需要存储”§8.3.2 [dcl.ref]。
  • 你太聪明了,感谢你的耐心。我明白了。再次感谢你。另外,你能给我发一份 C++ 标准文档吗?还是互联网链接?
【解决方案2】:

Why can't I make a vector of references? 的可能重复项(我目前没有代表对其进行标记)。

STL 容器必须包含可分配的类型,并且引用不可分配。

【讨论】:

    猜你喜欢
    • 2014-05-12
    • 1970-01-01
    • 1970-01-01
    • 2021-04-08
    • 2012-05-03
    • 1970-01-01
    • 1970-01-01
    • 2017-10-03
    • 2013-07-29
    相关资源
    最近更新 更多