假设我有一个名为
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);
make_filtered_iterator
帮助函数的方法... 目前还没有可尝试的内容... - athos