这是一个伪代码示例

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打自己的头。

10-01 07:05