排序二维数组不触及第二次元

Sort two-dimensional array without touching second dimension

本文关键字:第二次 二次元 二维数组 排序      更新时间:2023-10-16

首先,您可能会想:为什么需要两个维度,只需创建两个一维数组。
好吧,这是我的任务:用户类型查询的数量,然后为每个查询他输入任务的ID,对于ID = 0我需要使用第一个数组([][0])和ID = 1第二个数组,如果没有if语句(if (ID == 0)...blablabla)会更漂亮。
当然,有一种方法可以做到这一点与排序算法(泡沫,快速…),但我有点好奇:它可以用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];

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

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也与id保持顺序,添加它是很简单的
  2. 可以避免使用复杂的多维数组
  3. 你可以避免使用数组(通过使用向量)