gpt4 book ai didi

c++ - 试图反射(reflect)对原始变量更改的影响(通过引用调用)

转载 作者:搜寻专家 更新时间:2023-10-31 00:00:00 25 4
gpt4 key购买 nike

我定义了一个由对和 vector 组成的 vector 。为了更好的可读性,我这样做

#include <iostream>
#include <vector>
using namespace std;
class foo {
public:
vector< pair<int, vector<int> > > v;
vector< pair<int, vector<int> > >::iterator it;
void bar()
{
for( it = v.begin(); it != v.end(); it++ ) {
if ( 10 == (*it).first ) {
vector<int> a = (*it).second; // NOTE
a[0] = a[0]*2; // NOTE
}
}
}
};

int main()
{
foo f;
f.bar();
return 0;
}

如您所见,我将 (*i​​t).second 分配给变量 a 以便我轻松操作。问题是,当我改变 a 的值时,原始 vector v 没有改变。我可以解决将循环中的每个地方的 a 更改为 (*i​​t).second 的问题。然而,这会使代码难以阅读。

有什么方法可以将a中的变化反射(reflect)到原来的v中吗?我不得不说这样的引用调用

vector<int> a = &(*it).second;

没用

最佳答案

需要申报a作为引用:

vector<int>& a = (*it).second;

符号在 std::vector<int> a = &(*it).second;被解析为地址运算符和 a不是指针 - 这就是它无法工作/无法编译的原因。

关于c++ - 试图反射(reflect)对原始变量更改的影响(通过引用调用),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14456972/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com