【问题标题】:Sorting on pairs in c++ [closed]在c ++中对对进行排序[关闭]
【发布时间】:2015-07-30 21:06:23
【问题描述】:

我正在为活动计划问题编写代码。如果我将开始时间和结束时间存储在像pair&lt;int,int&gt;p[10] 这样的成对数组中,然后我需要根据结束时间对活动进行排序,随着结束时间的增加,省略了要求用户输入然后配对的部分简单,希望这个人回答不会有问题,所以我申请sort(p,p+n),其中 n 表示没有活动,我不喜欢它会以这种方式对所有开始活动或结束活动进行排序。所以这是代码。pair <int,int>p[10] Sort(p,p+6)

【问题讨论】:

  • 我已经省略了我们要求用户输入和配对以配对的代码部分
  • 你的问题是什么,你是在找人为你写排序吗?
  • 另外你为什么不直接使用mapset
  • 不,我只想知道我是否对存储两个整数(如 (1,6)(8,7)(6,10) 的对)应用排序,那么结果对会是什么。它会按 1,8,6 还是 6,7,10 排序。
  • 是的,我试过但不明白这就是为什么我在stackoverflow上问它

标签: c++ algorithm std-pair


【解决方案1】:

在对pair进行排序时,比较第一个项目,只有当它们相等时,才比较第二个项目。所以这不会按完成时间排序,而是按开始时间排序。但是sort 可以有第三个参数,它是一种用于排序的方法(它返回第一个参数是否在第二个之前)。传递一个 lambda 来比较第二个项目(完成时间)。

【讨论】:

    【解决方案2】:

    它按照活动开始时间的递增顺序对活动进行排序,即将每对中的第一个元素与第二对中的第一个元素进行比较,依此类推。 .假设 (7,9),(0,10),(4,5),(8,9),(4,10),(5,17) 是开始时间和结束时间,那么排序后的结果将为 (0,10)(4,5),(4,10),(5,17),(7,9),(8,9)。

    【讨论】:

      猜你喜欢
      • 2011-11-02
      • 1970-01-01
      • 2015-05-08
      • 2018-04-29
      • 2010-12-09
      • 1970-01-01
      • 1970-01-01
      • 2023-03-03
      • 2014-02-18
      相关资源
      最近更新 更多