2

我很难实施这样的事情:

int a = 5;
int& b = a;
pair <int, int> test;
test.first = b;
a = 1000;

test.firstvalue 显然不会改变,但我希望它改变,所以我正在尝试创建pair <int&, int&>,但由于编译器的原因我不能。

我的目标是test.first改变,我怎样才能实现它(不使用int*指针,是的)?

4

2 回答 2

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;
于 2013-05-05T15:20:50.153 回答
0

您不能将引用存储在 STL 容器中。原因是因为构造后无法分配引用。引用总是初始化为指向某个对象,但永远不能重新分配。因此引用类型不满足在容器内使用的类型要求。这就是您的编译器抱怨的原因。

如果您想要这种功能,您将需要存储指针。

以下问题具有类似性质: stl-stores-references-or-values

于 2013-05-05T15:20:01.247 回答