我有两个数组,一个用于点,另一个用于保存名称。我想用点按升序对数组进行排序,并将名称数组与其对应的点数组一起排序。我想知道我该怎么做。 这是我到目前为止所尝试的内容
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());
所有必要的变量都已初始化。
答案 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;重写你的设计。有一个包含名称和点信息的结构数组。 (合并此信息)使用点成员基于比较函数对此结构数组进行排序。
如果你坚持使用这种设计,我会编写自己的小排序功能,在交换点位置时也可以交换名称数组位置......但这不是很好吗?