在 C# 中给出一个结构:
struct Point {int x, int y}
Run Code Online (Sandbox Code Playgroud)
我们可以这样写:
List<Point> list;
list.OrderBy(p => p.x).ThenBy(q => q.y);
Run Code Online (Sandbox Code Playgroud)
如何使用 lambda 函数在 C++ 中表达此逻辑?
在我看来,您也希望对(y, x)1进行字典排序。您可以利用库函数std::tie。那个返回一个引用元组,并且 astd::tuple有一个小于运算符来执行字典比较。因此,您只需指定要比较项目的顺序。
这是它的查找方式std::vector(您在 C++ 中转到容器类型,始终以 开头std::vector):
std::vector<Point> my_list;
// Fill my_list
std::sort(begin(my_list), end(my_list), [](auto const& l, auto const& r){
return std::tie(l.y, l.x) < std::tie(r.y, r.x);
});
Run Code Online (Sandbox Code Playgroud)
1 - 我只是基于方法名称,所以这可能不是你真正想要的。
| 归档时间: |
|
| 查看次数: |
3175 次 |
| 最近记录: |