我已经定义了一个由对和向量组成的向量。为了更好的可读性,我这样做
#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;
}
如您所见,我分配(*it).second
给一个变量a
,以便我轻松操作。问题是,当我改变 的值时a
,原始向量v
不会改变。我可以解决这个变化a
到(*it).second
循环中的每个地方。但是,这会使代码难以阅读。
有什么方法可以反映a
原始的变化v
吗?我不得不说这样的引用调用
vector<int> a = &(*it).second;
不工作