2016-01-24 2 views
-1

У меня есть два массива, один для точек и другой для хранения имен. Я хочу сортировать массив с точками в порядке возрастания и массивом имен, чтобы идти вместе с их соответствующим массивом точек. Мне было интересно, как я могу это сделать. Вот что я пытался до сих порКак отсортировать два массива на основе первого массива

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

Считаете ли вы использование 'std :: map' вместо 2 массивов? –

+0

Не могли бы вы рассказать мне, как я могу это реализовать? И я не думаю, что могу это сделать, потому что общие очки не уникальны. –

+0

Если ключи не уникальны, вы можете использовать 'std :: multimap'. –

ответ

0

Если я вас правильно, вы можете использовать эту (карту):

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

станд :: карта сортов это самостоятельно автоматически

+0

Что он вернет –

+0

@Bereket У вас будет отсортированный по ключевому ассоциативному контейнеру (в вашем случае: номер, имя), вы можете прочитать о std :: map здесь: http://www.cplusplus.com/reference/map/map/|| В терминах мульти ключа с одинаковым значением вы можете использовать std :: multimap – Sunz

+0

Как я уже говорил в комментариях к вопросу, двойное значение может быть не уникальным. –

0

Ленивый подход => использование станд :: stable_sort. См.: http://en.cppreference.com/w/cpp/algorithm/stable_sort

Не так ленивый подход => Перепишите свой дизайн. Имейте массив структуры, который содержит информацию о имени и точке. (Объединить эту информацию) Сортировка этого массива структур на основе функции сравнения с использованием члена точки.

Если вы настаиваете на использовании этого дизайна, я бы написал свою собственную небольшую функцию сортировки, которая также заменила бы позицию массива имен при замене позиции позиции ... Но это не очень приятно?

Смежные вопросы