【发布时间】:2021-03-16 22:27:43
【问题描述】:
假设我有一个名为 spot_deals 的向量 SpotDeal 是一个类:
class SpotDeal
{
public:
int deal_id_; // primary key, and vector is sorted by id
string ccy_pair_; // ccy pair, e.g. GBPUSD, AUDUSD
double amount_;
}
假设我需要将spot_deals 的两个子集传递给函数foo 进行一些计算。但是,我可以制作副本,这会耗费内存和时间。实际上foo 只需要交易的迭代器。那么我可以制作vector<SpotDeal>的2个迭代器,即it1和it2并将它们传递给foo吗?
spot_deals 的两个子集可以被ccy_pair_ 过滤,例如GBPUSD 和 AUDUSD 的交易,或其他条件。所以我正在寻找一种方法来定义一个由向量和 lambda 函数定义的迭代器(虽然可以等效地是一个仿函数)。
有没有办法编写一个辅助函数make_filtered_iterator 以便我可以得到类似下面的东西?
auto it1 = make_filtered_iterator(spot_deals, filter_lambda1);
auto it2 = make_filtered_iterator(spot_deals, filter_lambda2);
foo(it1, it2);
【问题讨论】:
-
@wallyk ??我正在寻找一种方法来实现
make_filtered_iterator辅助功能...还没有什么可以尝试... -
@perreal thx 指出.. 但是 boost 有点太重了,我正在尝试使用 STL
标签: c++ lambda filter iterator containers