我很难实施这样的事情:
int a = 5;
int& b = a;
pair <int, int> test;
test.first = b;
a = 1000;
test.first
value 显然不会改变,但我希望它改变,所以我正在尝试创建pair <int&, int&>
,但由于编译器的原因我不能。
我的目标是test.first
改变,我怎样才能实现它(不使用int*
指针,是的)?
在 C++11 中,您可以使用reference_wrapper
. 你的代码会变成
#include <functional>
int a = 5;
auto b = ref(a);
b.get() = 3;
cout<<a<<endl;
pair <reference_wrapper<int>, int> test(b, 0);
a = 1000;
cout<<test.first<<endl;
您不能将引用存储在 STL 容器中。原因是因为构造后无法分配引用。引用总是初始化为指向某个对象,但永远不能重新分配。因此引用类型不满足在容器内使用的类型要求。这就是您的编译器抱怨的原因。
如果您想要这种功能,您将需要存储指针。
以下问题具有类似性质: stl-stores-references-or-values