是否存在查看成员函数/变量的整洁等效项



Streams库有一个整洁的map函数,用于通过成员函数查看范围。Range-V3中是否有等效视图?

view::transform会是唯一的选择吗?

文章中的示例:

std::vector widgets = /* ... */    
std::set ids = stream::MakeStream::from(widgets)
         .map(&Widget::getId)
         .to_set();

(忽略std::vectorstd::set缺少的模板参数)范围v3中的值为:

std::vector<Widget> widgets = // ...
std::set<Widget::ID> ids = widgets | ranges::view::transform(&Widget::getId);

是的,transform相当于Streams中的map

range-v3中的所有算法都接受可调用投影,该投影允许算法在变换的基础上选择范围元素,但仍然对整个元素进行操作。例如,我们可以根据它们的ID对Widget进行排序:

widgets |= ranges::action::sort(std::greater<Widget::ID>{}, &Widget::getId);

相关内容

  • 没有找到相关文章