首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >将指向成员的指针作为比较器/“键”的std算法

将指向成员的指针作为比较器/“键”的std算法
EN

Stack Overflow用户
提问于 2014-05-12 03:16:18
回答 3查看 500关注 0票数 18

我经常发现自己将std::sortstd::max_element等与lambda一起使用,而lambda只是调用一个成员函数

代码语言:javascript
复制
std::vector<MyType> vec;
// populate...
auto m = std::max_element(std::begin(vec), std::end(vec),
    [](const MyType& a, const MyType& b) { return a.val() < b.val()})

这感觉像是字符的浪费和清晰度的丧失。我知道我可以编写另一个函数/callable,并将函数指针/callable对象传递给这些算法函数,但我经常需要在程序中只做一次这样的排序,这并不是解决问题的好方法。理想情况下,我想说的是:

代码语言:javascript
复制
auto m = std::max_element(std::begin(vec), std::end(vec), &MyType::val);

并且让对象按照它们的val()排序。有没有我忽略的stdlib的某些部分可以帮助我做到这一点?或者是另一种简单的方法呢?我想让排序或搜索的内容变得尽可能明显。

我意识到仅仅&MyType::val是不够的,我正在寻找一些可以包装它的东西,或者提供类似的功能而不模糊它的含义。

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23596840

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档