这是一个伪代码示例
vector<Fred> gFred;
{
// init gFred
Fred &fred = gFred[0];
size_t z = 0;
do
{
fred = gFred[z];
// do odd processing with fred
z++;
}
while (fred.lastElementInSet == 0);
}
引起我注意的是gFred [0]被覆盖的事实。
这使我认为,与其说init fred是对新元素的引用,不如说是,
fred = gFred[z];
实际发生的是gFred [1]正在覆盖gFred [0]。
我想在这里做正确的事情,是将自己抬起头几次,然后将其转变为指针实现,并继续我的生活。
我诊断正确吗?还是需要更多的教育?
最佳答案
是的,您在那里获得结构副本。引用不能反弹,即,一旦初始化,引用将保持不变。
而且您的解决方案也是合适的。邓诺(Dunno)about打自己的头。