0
我從矢量中提取最小值。提取矢量的最小值
說vector = [0,inf,inf,inf];
ExtractSmallest(vector) = 0;
然後vector = [0,1,inf,inf];
,但現在,我們已經看到0。因此,
ExtractSmallest(vector) = 1;
我代表這在我的代碼做nodes.erase(nodes.begin() + smallestPosition);
但是,我現在認識到擦除是非常糟糕的。有沒有辦法實現這個沒有擦除載體?只是跳過我們已經看到的那些?
Node* CGraph::ExtractSmallest(vector<Node*>& nodes)
{
int size = nodes.size();
if (size == 0) return NULL;
int smallestPosition = 0;
Node* smallest = nodes.at(0);
for (int i=1; i<size; ++i)
{
Node* current = nodes.at(i);
if (current->distanceFromStart <
smallest->distanceFromStart)
{
smallest = current;
smallestPosition = i;
}
}
nodes.erase(nodes.begin() + smallestPosition);
return smallest;
}