流库 http://www.infoq.com/news/2014/07/cpp14-streams-lazy-functional有一个整洁的map
函数通过成员函数查看范围。有没有等效的观点Range-V3 http://www.infoq.com/news/2014/07/cpp14-streams-lazy-functional?
Would view::transform
是唯一的选择吗?
文章中的例子:
std::vector widgets = /* ... */
std::set ids = stream::MakeStream::from(widgets)
.map(&Widget::getId)
.to_set();
(忽略缺少的模板参数std::vector
and std::set
) 在 range-v3 中将是:
std::vector<Widget> widgets = // ...
std::set<Widget::ID> ids = widgets | ranges::view::transform(&Widget::getId);
Yes, transform
相当于map
在流中。
range-v3 中的所有算法都接受可调用的投影 http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4128.html#algorithms-should-take-invokable-projections允许算法根据转换选择范围元素,但仍然对整个元素进行操作。例如,我们可以对Widget
通过他们的 ID:
widgets |= ranges::action::sort(std::greater<Widget::ID>{}, &Widget::getId);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)