C++ 排序并行阵列

C++ 排序并行阵列,c++,C++,我有两个数组。一个是卷号,另一个是卷号的总分。我必须按升序对卷号数组进行排序,同时保留分配给每个卷号的数据。我已经对数组进行了排序,但是如何根据卷号放置标记 这是到目前为止的代码 int roll_num[5] = { 2, 4, 1, 6, 8 }, total_marks[5] = { 9, 7, 10, 8, 9 }, min=0, temp, size = 5; for (int i = 0; i <= size; i++) { min = i;

我有两个数组。一个是卷号,另一个是卷号的总分。我必须按升序对卷号数组进行排序,同时保留分配给每个卷号的数据。我已经对数组进行了排序,但是如何根据卷号放置标记

这是到目前为止的代码

int roll_num[5] = { 2, 4, 1, 6, 8 }, total_marks[5] = { 9, 7, 10, 8, 9 }, min=0, temp, size = 5;
    for (int i = 0; i <= size; i++)
    {
        min = i;
        for (int j = i + 1; j < size; j++)
        {
            if (roll_num[j] < roll_num[min])
            {
                min = j;
            }
        }
        swap(roll_num[i], roll_num[min]);
    }
    cout << "Roll No." << " " << "Total Marks" << endl;
    for (int i = 0; i < size; i++)
    {
        cout << roll_num[i] << "       |     " << total_marks[i] << endl;
    }

由于您的基本排序算法有效,我检查了它,您所需要做的就是为total_marks数组添加一个等价的交换调用。因此,在会议结束后:

swaproll_num[i],roll_num[min]; 行,只需添加以下内容:

总分[i]、总分[min];
因此,在roll_num数组上执行的所有操作都将复制到total_marks数组中。

您可能希望将这两个数组合并为一个数组。然后将对其进行排序,并连接您的值:

int roll_num[5] = { 2, 4, 1, 6, 8 };
int total_marks[5] = { 9, 7, 10, 8, 9 };
std::map<int, int> my_map;
for (int i=0; i < 5; ++i) {
    my_map.insert(roll_num[i], total_marks[i]);
}

如果希望它们按roll_num排序。

请考虑使用一个包含两个值的结构数组。这会使两个值保持在一起,无论您如何排序。如果您坚持使用并行数组,则必须使它们保持并行。当您交换roll_num中的两个条目时,请交换total_Mark中的相应条目。这是否回答了您的问题@PeteBecker所说的条目你的意思是存储这些数字的索引?std::sort有什么问题吗?好吧,这是可行的,但我真的必须先运行这个。谢谢,顺便说一句@scypx与您的代码中给出的数据,您的排序算法和我建议的添加工作!但您可以在其他数据上自行测试。