如何基于第一个数组对两个数组进行排序

时间:2016-01-24 22:03:24

标签: c++

我有两个数组,一个用于点,另一个用于保存名称。我想用点按升序对数组进行排序,并将名称数组与其对应的点数组一起排序。我想知道我该怎么做。 这是我到目前为止所尝试的内容

string sName[noS];
char sex[noS];           //Variable to hold the sex information of the students
char gpa[noS];           //Variable to hold the GPA
char essayGrade[noS];
int convGpa[noS];
int convEssayGrade[noS];
double overallPoint[noS];
pair<double, string> pairs[noS];
int want_len = noS;



pairs[i] = make_pair(overallPoint[i], sName[i]);
                    cout << endl <<"Over all point of " << pairs[i].second << ": " << pairs[i].first << endl;
                    sort(pairs.begin(), pairs.end());

所有必要的变量都已初始化。

2 个答案:

答案 0 :(得分:0)

如果我找对你,你可以使用它(地图):

     #include<map>
      using namesapce std;
        map<double, string> myMap;
        myMap.insert(name of the pair you want to insert)

std :: map自动对其进行排序

答案 1 :(得分:0)

懒惰的方法=&gt;使用std :: stable_sort。请参阅:http://en.cppreference.com/w/cpp/algorithm/stable_sort

不那么懒惰的方法=&gt;重写你的设计。有一个包含名称和点信息的结构数组。 (合并此信息)使用点成员基于比较函数对此结构数组进行排序。

如果你坚持使用这种设计,我会编写自己的小排序功能,在交换点位置时也可以交换名称数组位置......但这不是很好吗?