c ++引用副本麻烦(stl对)

时间:2013-05-05 15:15:28

标签: c++ stl

我很难实现这样的事情:

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

test.first值不会改变,但是我希望它能够改变,所以我试图创建pair <int&, int&>,但我不能因为编译器。

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

2 个答案:

答案 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