0

给定以下代码:

for (list<Vertex*>::iterator v = vertexList->begin(); v != vertexList->end(); v++)
{
    if (!(*(*v) == *u))
    {
        (*v)->setColor(white);
        (*v)->setPred(NULL);
        (*v)->setDist(INFINITY);
    }
}

queue<Vertex*> Q;
Q.push(u);
Vertex* v = Q.front();  // WONT assign the item that is in the queue to v
Vertex* t = Q.front();        // WILL assign the item that is in the queue to t

如您所见,变量 V 已在 for 循环中定义,并且(至少据我所知)应该只在 for 范围内持续存在。(当 for 处于活动状态时)。

但是,当我尝试将 Q 前端分配给一个名为 V 的新变量时,它不会真正将当前位于 QUEUE 中的项目放入其中。相反,我只看到?????? 在里面。(使用视觉 STUDIO 2012)。编译成功通过。

另一方面,当我尝试将 Q 前端分配给未命名为 v 的变量时,它会让我这样做,并且 T 将保持正确的值(队列中的第一项)。

我在这里想念什么..?

4

1 回答 1

0

我认为这只是一个调试器错误,如果有描述性属性或 Vertex 的成员,您可以写入控制台进行控制,您会看到 Vertex* v 已正确分配。

于 2013-04-05T05:36:04.140 回答