我有一个包含交易信息的对象向量。我想写一个函数,它将返回“买入”交易的向量或“卖出”交易的向量?
如何将对象矢量划分为两个向量?
修改 我想沿着这些方向做点什么:
std::vector<AggregatedQuoteType> OrderBook::get_aggregated_order_book(SellBuyType which_side) const
{
std::vector<AggregatedQuoteType> ret;
std::vector<AggregatedQuoteType>::iterator i = v_OrderInfo.begin();
for (; i != v_OrderInfo.end(); ++i)
((*i).get_SB_type()==BUY ? v_BuyOrders : v_SellOrders).push_back(i);
if(which_side==SELL){
ret = v_SellOrders;
}
else{
ret = v_BuyOrders;
}
return ret;
}
答案 0 :(得分:4)
您可以使用std::partition_copy()
:
std::vector<Trade> buy, sell;
std::partition_copy(trades.begin(), trades.end(),
std::back_inserter(buy), std::back_inserter(sell),
[](Trade const& trade){ return trade.is_buy_side(); });
答案 1 :(得分:1)
根据条件迭代每个元素并将push_back迭代到其他两个向量之一。这是一种方式(很多):
vector<Trade> vec;
vector<Trade> buy;
vector<Trade> sell;
for (const Trade& t : vec)
(some_condition ? buy : sell).push_back(t);