Форум программистов, компьютерный форум CyberForum.ru

Сортировка двух векторов (имена и возраст) - C++

Восстановить пароль Регистрация
 
strange_man
 Аватар для strange_man
9 / 9 / 0
Регистрация: 17.05.2012
Сообщений: 117
15.04.2013, 19:13     Сортировка двух векторов (имена и возраст) #1
Имеется вектор строк, которые обозначают имена, и вектор чисел, означающий их возрасты.

Нужно написать функцию sort() которая бы сортировала имена в алфавитном списке, и потом соответственно этим именам размещала возрасты участников.

я написал такую функцию
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
void Name_pairs::sort(vector<string>& a, vector<double>& b)
{
    for (int j = a.size() - 1; j >= 2; j--)
    {
        for (int i = 0; i < j; i++)
        {
            if (a[i] > a[i+1])
            {
                string temp_st = a[i];
                a[i] = a[i+1];
                a[i+1] = temp_st;
 
                double temp_dbl = b[i];
                b[i] = b[i+1];
                b[i+1] = temp_dbl;
            }
        }
    }
}
но ведь наверно это не очень хорошо в плане производительности каждый раз менять местами элементы вектора чисел?

подскажите, а лучше намекните, можно ли сделать это более изящно? или сойдет?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.04.2013, 19:13     Сортировка двух векторов (имена и возраст)
Посмотрите здесь:

сложение и вычитание векторов, скалярное произведение векторов, умножение на скаляр, сравнение векторов, вычисление длины вектора C++
C++ Вычисление суммы двух векторов
Используя структуру с полями пол, ФИО, возраст, распечатать количество девушек по имени «Елена» и имена тех, кому за 19 лет C++
C++ Слияние двух векторов
C++ Не работает объединение двух векторов
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
yoghurt92
373 / 344 / 22
Регистрация: 17.05.2012
Сообщений: 1,049
15.04.2013, 19:25     Сортировка двух векторов (имена и возраст) #2
strange_man, а не легче ли создать вектор из пар, где одно поле имя, второе возраст

C++
1
vector<pair<string, int> > coll;
strange_man
 Аватар для strange_man
9 / 9 / 0
Регистрация: 17.05.2012
Сообщений: 117
15.04.2013, 19:44  [ТС]     Сортировка двух векторов (имена и возраст) #3
Цитата Сообщение от yoghurt92 Посмотреть сообщение
strange_man, а не легче ли создать вектор из пар, где одно поле имя, второе возраст

C++
1
vector<pair<string, int> > coll;
я просто выполняю задание.
а по книге до векторов пар я еще не дошел
yoghurt92
373 / 344 / 22
Регистрация: 17.05.2012
Сообщений: 1,049
15.04.2013, 19:47     Сортировка двух векторов (имена и возраст) #4
strange_man, ну я сейчас читаю книгу по STL и пары даются раньше векторов, там нет ничего сложного, создай вектор пар, и можешь написать функцию для сортировки по именам, и тогда не нужно будет сортировать уже возраст, все будет сделано при сортировке по именам
Yandex
Объявления
15.04.2013, 19:47     Сортировка двух векторов (имена и возраст)
Ответ Создать тему
Опции темы

Текущее время: 13:45. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru