给定一个像这样的向量:
struct product {
float price;
float shipping;
};
vector<product> products;
如何从向量中删除所有产品,除了最大比率的shipping
产品price
?
我尝试将迭代器保持到迄今为止发现的最高迭代器...
vector<product>::iterator it = products.begin();
vector<product>::iterator largest = products.begin();
while (it != products.end())
{
if (it->shipping / it->price > largest->shipping / largest->price)
{
products.erase(largest);
largest = it;
++it;
}
else
{
it = products.erase(it);
}
}
这一切都很好,但是如果向量中的第一个元素具有最高的比率(它被删除),它就会失败。如果未初始化,我可以解决这个问题(我认为)largest
,然后在语句中检查它if
,但据我所知,没有真正的方法可以做到这一点(如何检查迭代器是否已初始化?)。
有什么建议么?