对象的分离向量
Separating vector of objects
我正在编写一个函数,该函数将根据其中一个对象的值将对象的向量分成两个向量。 我希望它返回任何向量。
这是我到目前为止的代码
std::vector<AggregatedQuoteType> OrderBook::get_aggregated_order_book(SellBuyType which_side) const
{
std::vector<AggregatedQuoteType> ret;
std::vector<AggregatedQuoteType>::const_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;
}
编辑
我收到以下错误:
[错误] 调用 'std::vector::p ush_back(const AggregatedQuoteType&) const' 时没有匹配函数
您已将
函数get_aggregated_order_book
标记为const
。
OrderBook::get_aggregated_order_book(SellBuyType which_side) const
^^^^^
Here!
C++中的const
关键字意味着您不会对类中的任何成员进行更改,我认为v_BuyOrders
和v_SellOrders
都是如此。
如果要修改 OrderBook
类的成员,则需要使该方法成为非常量。
您是否需要填充v_BuyOrders和v_SellOrders,或者只是返回which_side的任何匹配项?如果是后者,如何仅应用copy_if操作并返回结果?
std::vector<AggregatedQuoteType> ret;
std::copy_if(v_OrderInfo.cbegin(), v_OrderInfo.cend(), std::back_inserter(ret),
[=](const AggregatedQuoteType &at) { return at.get_SB_type() == which_side) };
return ret;
编辑:不使用lambda/C++11,
struct pred {
SellBuyType type;
pred(SellBuyType t) : type(t) {}
bool operator()(const AggregatedQuoteType &at) {
return at.get_SB_type() != type; // Copies the elements for which this returns false
}
};
std::remove_copy_if(v_OrderInfo.cbegin(), v_OrderInfo.cend(), std::back_inserter(ret), pred(which_side));
但请注意,remove_if/remove_copy_if 实际上并没有删除任何内容,只是将"删除"元素移动到矢量的背面。如果还想删除元素,请在返回值 remove_copy_if 上使用 vector::erase。
相关文章:
- 写入向量<向量<bool>>
- 函数向量_指针有不同的原型,我可以构建一个吗
- std::向量与传递值的动态数组
- 将值指定给向量(2D)的向量中的某个位置
- 找不到成员对象:没有名为get_event()的成员,也处理多态性和向量
- 如何使用向量的template_back函数
- 尝试通过多个向量访问变量时,向量下标超出范围
- 如何通过派生类函数更改基类中的向量
- C++从另一个类访问公共静态向量的正确方法是什么
- 如何将ampl中的集合表示为c++中的向量
- 变量没有改变?通过向量的函数调用
- 迭代时从向量和内存中删除对象
- 向量 <int> a {N, 0} 和 int arr a[N] = {0} 的时间复杂度有什么区别
- C++:如何读取分离变量,然后读取向量
- 向量未在分离的线程中推送值
- 为什么分离分配运算符| =不适用于布尔的向量
- 如何在 C++ 中的两个分离向量中保存两个数据殖民地
- 向量的向量,从数组中分离出不同的值
- C++从文本文件中读取并分离到向量中
- 对象的分离向量