使用while的条件赋值

Tej*_*dse 2 c++ optimization

我一直在研究一些代码(为了扩展它),我遇到了这个部分:

// 'assignList' is an unsigned int array: "unsigned int assignList[ numElements ]"
// 'postAssignList' is a std::vector< unsigned int >
for ( unsigned int pp; pp < numElements; ++pp )
{
    while( assignList[pp] != postAssignList[ assignList[pp] ] )
    {
        assignList[pp] = postAssignList[ assignList[pp] ];
    }
}
Run Code Online (Sandbox Code Playgroud)

我不明白为什么while循环被用于条件赋值.这是一种优化技术吗?或者它确保了分配(我认为是保证)?

Yve*_*ust 5

这根本不是条件赋值,这是一个简单的迭代.改变assignList[pp]原因的价值反过来改变postAssignList[ assignList[pp]].这看起来像列表遍历.

while( x != Next[ x ] )
{
    x = Next[ x ];
}
Run Code Online (Sandbox Code Playgroud)

在执行for循环之前,每个assignList[pp]指向链表的点都由自循环终止.

执行后,每个assignList[pp]指向初始列表的尾部元素.

  • 是的,你是盲人.`pp`保持不变并不重要,`assignList [pp]`确实会改变.让`assignList [9] == 0`,`postAssignList [0] == 1`,`postAssignList [1] == 2`和`postAssignList [2] == 2``assignList [9]`将被分配值"1"然后"2". (2认同)