我经常要做的事情是在元素集合中找到一个成员,该成员具有给定值的元素。例如给出:
class Person
{
string getName() const {return mName;}
private:
string mName;
};
std::vector<Person> people;
我想找到名为“Alice”的人。一种方法是(使用升压范围适配器):
string toFind = "Alice";
auto iterator = find(people | transformed([](Person const & p){p.getName()}) , toFind );
对于如此简单的操作,这是很多样板。难道不应该做类似的事情:
string toFind = "Alice";
auto iterator = find(people | transformed(&Person::getName) , toFind );
(无法编译,因为 &Person::getName 不是一元函数)
有没有一种简单的方法可以为成员获取一元函数?