【发布时间】:2021-06-26 12:28:01
【问题描述】:
我正在用非负整数填充以下向量以解决代码堵塞问题:
vector<pair<int,pair<int,int> > > v;
以下排序方式提交失败:
sort(v.begin(),v.end(),[](auto a,auto b){
return a.first < b.first;
});
但是如果我只是改变排序如下:
sort(v.begin(),v.end());
提交通过。
我用于排序的 lamda 函数有什么问题?
谢谢
【问题讨论】:
-
你为什么只在你的 lambda 中比较
first?pair也有一个second成员。 -
“出了什么问题”取决于您想要实现的目标。您的 lambda 只考虑第一个元素,但
std::pair's default comparison operator 比较两个元素。 -
@NathanOliver。 vector 的每个元素都是一个间隔(开始分钟和结束分钟)。排序后我还需要知道原始索引,所以我将它存储在内部对中。 [开始,(结束,索引)]。我需要知道重叠的间隔,所以我只在间隔的开始时间对其进行排序。
-
谢谢@churill。这个链接很有帮助。
-
下次请说得更具体一些,比如“提交”的意思。 “程序生成正确/错误”结果会提供更多信息。在我阅读接受的答案之前,我确信您谈到了编译错误。
标签: c++ vector stl std std-pair