我很难实现这样的事情:
int a = 5;
int& b = a;
pair <int, int> test;
test.first = b;
a = 1000;
显然, test.first
值不会改变,但是我希望它能够改变,所以我试图创建pair <int&, int&>
,但我不能因为编译器。
我的目标是改变test.first
,如何实现它(不使用int*
指针,是)?
答案 0 :(得分:5)
在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;
答案 1 :(得分:0)
您无法在STL容器中存储引用。原因是因为施工后无法分配参考。引用始终初始化为指向某个对象但永远不能重新分配。因此,引用类型不满足在容器内使用的类型要求。这就是你的编译器抱怨的原因。
如果你想要这种功能,你需要存储指针。
以下问题具有类似性质: stl-stores-references-or-values