划分对象的矢量

时间:2014-03-29 19:50:50

标签: c++ object vector

我有一个包含交易信息的对象向量。我想写一个函数,它将返回“买入”交易的向量或“卖出”交易的向量?

如何将对象矢量划分为两个向量?

修改 我想沿着这些方向做点什么:

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;
}

2 个答案:

答案 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);