本文整理汇总了C++中BinaryHeap::RemoveFirst方法的典型用法代码示例。如果您正苦于以下问题:C++ BinaryHeap::RemoveFirst方法的具体用法?C++ BinaryHeap::RemoveFirst怎么用?C++ BinaryHeap::RemoveFirst使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类BinaryHeap
的用法示例。
在下文中一共展示了BinaryHeap::RemoveFirst方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: FindBestScore
//.........这里部分代码省略.........
}
#endif
// Now extract from the heap, best score to worst.
// This attempts to get early-outs very quickly and prevent too much recursion.
//WORD *pwBest = NULL;
//WORD *pwCur = NewHeap.FindFirst();
ScoreTri **ppstBest = NULL;
ScoreTri **ppstCur = NewHeap.FindFirst();
//if ( pwCur == NULL )
if ( ppstCur == NULL )
{
// Found nothing that was better.
return fBestSoFar;
}
// Above this score, just don't bother.
float fCutoffScore = fCutoffFactor * NewHeap.GetCurrentSort();
#ifdef _DEBUG
float fPrevScore = 1.0f;
#endif
int iTried = 0;
//while ( pwCur != NULL )
while ( ppstCur != NULL )
{
ScoreTri *pstCur = *ppstCur;
float fThisTriNegScore = NewHeap.GetCurrentSort();
NewHeap.RemoveFirst();
#ifdef _DEBUG
// Check this heap actually works!
VERIFY ( fThisTriNegScore <= fPrevScore );
fPrevScore = fThisTriNegScore;
#endif
if ( fThisTriNegScore < fCutoffScore )
{
// Reached the cutoff for this tri - don't bother continuing.
break;
}
float fScore = fCurrentScore - fThisTriNegScore;
if ( fScore >= fBestSoFar )
{
// We've already gone more than the best score.
// The reast of the heap is bound to be greater, so don't bother continuing.
break;
}
if ( bNoMadJumps )
{
iTried++;
if ( iTried > iLookaheadCutoff )
{
// Tried enough tris - don't want to cause a combinatorial explosion.
break;
}
}