C++ 是否有与查看成员函数/变量相同的简单等价物?

C++ 是否有与查看成员函数/变量相同的简单等价物?,c++,c++11,boost-range,range-v3,C++,C++11,Boost Range,Range V3,有一个整洁的map函数,可以通过成员函数查看范围。有没有类似的观点 view::transform是唯一的选项吗?文章中的示例: std::vector widgets = /* ... */ std::set ids = stream::MakeStream::from(widgets) .map(&Widget::getId) .to_set(); (忽略ranges-v3中缺少的std::vector和std::set)模板参数将是:

有一个整洁的
map
函数,可以通过成员函数查看范围。有没有类似的观点


view::transform
是唯一的选项吗?

文章中的示例:

std::vector widgets = /* ... */    
std::set ids = stream::MakeStream::from(widgets)
         .map(&Widget::getId)
         .to_set();
(忽略ranges-v3中缺少的
std::vector
std::set
)模板参数将是:

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

非常感谢。从概念上讲,我认为转换和选择之间应该有某种区别。转换看起来像是以某种方式处理数据的东西。(即…视图::转换([](arg0){return arg0*arg0;}))或类似内容。在“选择”和“转换”之间没有逻辑区别。一个观点行,为什么有两个观点?还有,凯西,不需要采取行动。该算法运行良好:
ranges::sort(widgets,std::greater{},&Widget::getId)@EricNiebler想一想,你完全正确,我收回100%的思考;类似于
#define SELECT(pMember)ranges::view::transform([](const auto&val){return val.pMember;})
生成
auto id=widgets | SELECT(getId())仍然是非常甜蜜的。我不认为没有宏就可以实现它。
widgets |= ranges::action::sort(std::greater<Widget::ID>{}, &Widget::getId);