我一直在研究一些代码(为了扩展它),我遇到了这个部分:
// '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
循环用于条件赋值。这是一种优化技术吗?或者它确保了分配(我认为是保证)?
答案 0 :(得分:5)
这根本不是条件赋值,这是一个简单的迭代。更改assignList[pp]
的值会导致postAssignList[ assignList[pp]]
的更改。这看起来像列表遍历。
while( x != Next[ x ] )
{
x = Next[ x ];
}
在执行for
循环之前,每个assignList[pp]
指向一个由自循环终止的链接列表。
执行后,每个assignList[pp]
指向初始列表的尾部元素。