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

// '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] ];
    }
}

我不明白为什么将while循环用于条件赋值。这是一种优化技术吗?还是可以确保分配(我认为可以保证)?

最佳答案

这根本不是条件分配,这是简单的迭代。更改assignList[pp]的值会依次更改postAssignList[ assignList[pp]]。这看起来像列表遍历。

while( x != Next[ x ] )
{
    x = Next[ x ];
}

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

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

关于c++ - 使用while的条件赋值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22247333/

10-13 21:45