有没有办法改变 std::pair 的引用成员指向的位置?

pee*_*eto 3 c++

因此,一旦std::pair初始化了至少一个引用变量,例如像这样:

int a = 53;
int b = 42;
std::pair<int, int&> foo(33, a);
Run Code Online (Sandbox Code Playgroud)

有没有办法改变引用变量的指向?

任务:

foo = std::make_pair(33, std::ref(b));
Run Code Online (Sandbox Code Playgroud)

和交换:

std::pair<int, int&> bar(33, b);
foo.swap(bar);
Run Code Online (Sandbox Code Playgroud)

似乎只是将新内容移动到a并留下foo指向它之前 ( a)位置的第二个成员,因此没有做我在这里试图实现的目标。我知道引用不能像这里回答的那样反弹 ,但这不是我在这里想要做的。我想要做的是制作一对新的并将其内容分配给现有的,这在技术上不是一回事。

提前致谢!

Sam*_*hik 5

引用在 C++ 中总是以相同的方式工作。

int a;
int &b=a;
Run Code Online (Sandbox Code Playgroud)

b将始终是对a,的引用,直到b超出范围并被销毁。

std::pairs 或其他任何地方的引用都以相同的方式工作。一旦它们被绑定,它们将始终引用它们被绑定到的同一个对象。分配给引用将始终分配给引用的对象。

引用是什么、对 an int、 achar或任何其他对象的引用也无关紧要。在这方面,引用总是以相同的方式工作。