值是按引用还是按值存储在 std::pair<> 中?

Ath*_*bey 1 c++ std-pair c++17

所以我有一个类myClass和两个私有变量,假设 i,j 和一个类方法myMethod如下-

std::pair<int, int > myClass::myMethod(void)
{
    std::pair<int, int> Pair;
    this->i = 100;
    this->j = 50;
    Pair.first = this->i;
    Pair.second = this->j;
    return Pair;
}
Run Code Online (Sandbox Code Playgroud)

我从另一个函数调用该方法如下 -

std::pair<int, int> receivedPair = myClass.myMethod();
Run Code Online (Sandbox Code Playgroud)

所以如果我编辑receivedPair让我们说

receivedPair.first = 200;
Run Code Online (Sandbox Code Playgroud)

Class 变量i也会变成等于 200 吗?我基本上需要通过引用串联的几个函数来传递变量,以便更新相同的内存位置...... TIA

Bat*_*eba 5

的值std::pair是按值计算的。

在你的情况下,虽然你可以使用

std::pair<std::reference_wrapper<int>, std::reference_wrapper<int>>
Run Code Online (Sandbox Code Playgroud)

作为类型。

参考:https : //en.cppreference.com/w/cpp/utility/functional/reference_wrapper