提问者:小点点

如何在C++20约束算法中嵌套投影元素?


假设我有一个std::pairs的std::vector,那么我可以使用C++20约束算法的投影工具根据子对象对元素进行排序:

std::vector<std::pair<int, std::string>> v;
// sort by std::string
ranges::sort(v, {}, &std::pair<int, std::string>::second);

但是像这样嵌套投影怎么做呢?

// sort by std::string::size
ranges::sort(v, {}, &std::pair<int, std::string>::second::size);

共1个答案

匿名用户

投影只是一个任意的可调用。如果可以的话,提供指向成员的指针是很方便的。但如果没有,只需使用lambda:

ranges::sort(v, ranges::less(), [](auto const& elem) { return elem.second.size(); });

相关问题


MySQL Query : SELECT * FROM v9_ask_question WHERE 1=1 AND question regexp '(何在|c++20|约束|算法|中|嵌套|投影|元素)' ORDER BY qid DESC LIMIT 20
MySQL Error : Got error 'repetition-operator operand invalid' from regexp
MySQL Errno : 1139
Message : Got error 'repetition-operator operand invalid' from regexp
Need Help?