排序二维数组而不触及第二维

时间:2016-08-19 20:40:55

标签: c++ arrays sorting multidimensional-array

首先,您可能想知道:为什么您需要有两个维度,只需创建两个一维数组。
嗯,这是我的任务:用户输入查询数量,然后为每个查询输入任务ID,对于ID = 0我需要使用第一个数组([] [0])并且如果没有if语句(if (ID == 0)...blablabla),ID = 1秒,这样做会更漂亮 当然有一种方法可以通过排序算法(泡泡,快速...)来实现这一点,但我有点古玩:可以用std::sort();函数完成吗?
谢谢。
附:以下是澄清的简单示例:

我很抱歉给出这样一个不好的例子我要编辑它,首先这里有我的数据

2 1   
14 5   
5 7   
3 45  `

所以我需要这样排序:

2 1   
3 5   
5 7   
14 45

因此,当输入查询时,例如id = 1 number = 2,只输出array[2][1];

1 个答案:

答案 0 :(得分:1)

您可以将数据表示为某种结构

struct data{
  int id;
  int other_data;
  ...
};

仅按ID排序......

{
  std::vector<data> my_vec;
  //Populate my_vec
  std::sort(my_vec.begin(), my_vec.end(), [](const data& d1, const data& d2){
    return d1.id < d2.id;
  });
}

三个好处:

  1. 如果您稍后需要other_data_2同时与[{1}}订购,则添加它是微不足道的
  2. 您可以避免使用复杂的多维数组
  3. 您可以避免使用数组(使用向量)