gpt4 book ai didi

c++ - 充当过滤器的范围 - 不同的迭代器集

转载 作者:行者123 更新时间:2023-11-28 00:27:35 24 4
gpt4 key购买 nike

我想像这样迭代自定义范围:

for(auto &all : data.getAll())
for(auto odd : data.getOdds())
for(auto X : data.getX())
...

我知道基于范围的循环使用迭代器,因此需要专门化 begin()、end()。 Is there a cleaner method than this one

最佳答案

看看 implementationBoost.Range Adaptors .有几个named adaptors重载 operator| 以执行输入范围的过滤、转换等操作。

std::vector<int> vec(20);
std::iota(vec.begin(), vec.end(), 0);

using namespace boost::adaptors;

for(auto i : vec | filtered([](int i){ return i % 2 == 0; })
| transformed([](int i){ return i * 2; })
| reversed) {
std::cout << i << ' ';
}
std::cout << '\n';

上面的示例在将输入范围加倍并反转结果范围后仅打印输入范围内的偶数。

Live demo

关于c++ - 充当过滤器的范围 - 不同的迭代器集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24243516/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com