翻译你的逻辑成代码期正视的最文学的方式是这样的:
std::vector<AggregatedQuoteType>::iterator OrderBook::find_price(PriceType price)
{
std::vector<AggregatedQuoteType>::iterator i = v_BuyOrders.begin();
do
{
for (; i != v_BuyOrders.end(); ++i)
if(i->get_price() >= price)
break;
return i; // i.e. end()
} while (!another_function(*i));
return i;
}
它简化为:
std::vector<AggregatedQuoteType>::iterator OrderBook::find_price(PriceType price)
{
std::vector<AggregatedQuoteType>::iterator i;
for (i = v_BuyOrders.begin(); i != v_BuyOrders.end(); ++i)
if(i->get_price() >= price && another_function(*i))
break;
return i;
}
或者,如果你想使用标准算法更声明式的方法:
#include <algorithm>
...
std::vector<AggregatedQuoteType>::iterator OrderBook::find_price(PriceType price)
{
return std::find_if(v_BuyOrders.begin(), v_BuyOrders.end(),
[](const AggregatedQuoteType& x)
{ return x.get_price() >= price && another_function(x); });
}
那么,它可能是*另一个循环没有初始化部分,因为你会使用我您保存的计算器。 – jsantander
为什么不'if(i-> get_price()> = price && some_other_condition(i))break;'? –
你能提出一个建议吗? –