Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.05.2010, 23:03   #1
Ciberal
Пользователь
 
Регистрация: 28.10.2008
Сообщений: 33
По умолчанию Сортировка массива экземпляров класса по именам

Сортировка массива экземпляров класса по именам, присвоенным внутреклассовой переменной типа char из [20] элементов.
Вот как пытался это реализовать. Такой способ прошел с сортировкой не по словам, а по типу int:

Код:
 string *str_arr;
                   int  *int_arr;
                   str_arr=(string*) malloc (n*sizeof(string));
                   int_arr=(int*) malloc (n*sizeof(int));
                   int_arr=new int[n];
                   str_arr=new string [n];
                   pair <string,int> arr_par[n];
                    for(int j=0;j<n;j++)
                    {
                         str_arr[j]=p[j].adress;
                         int_arr[j]=j;      
                    }
                   
                   for(int j=0;j<n;j++)
                    {  
                       arr_par[j] = make_pair(str_arr[j],int_arr[j]);
                       sort(arr_par,arr_par+n);
                    }
                           for (int y=0;y<n;y++)
                    {
                 
                          int h=arr_par[y].second;
                          cout<<h;
                          Vuvod(p,h);             //выводит на экран заданный               
                                                       //элемент массива классов  
                     }
То-есть получается, что пара сортируется так, что соответсвенно сортированным именам выстраивается нужный порядок элементов, которые последовательно передаются в функцию вывода.
Ciberal вне форума Ответить с цитированием
Старый 18.05.2010, 23:08   #2
Ozerich
Студент 1 курса
Форумчанин Подтвердите свой е-майл
 
Аватар для Ozerich
 
Регистрация: 27.06.2008
Сообщений: 959
По умолчанию

Цитата:
Код:
                   for(int j=0;j<n;j++)
                    {  
                       arr_par[j] = 
                       sort(arr_par,arr_par+n);
                    }
А зачем n раз сортировать? Можно сделать проще
Код:
for(int j=0;j<n;j++)
                         arr_par[j] = make_pair(str_arr[j],int_arr[j]);    
sort(arr_par,arr_par+n);
Массив из пар по умолчанию сортируется по первому элементу. Если надо по-второму то можно поменять их местами или написать собственную функцию для сравнения(третий параметр в sort)
C++(STL, QT, WinInet) / DHTML(CSS) / JavaScript / PHP Developer
Ozerich вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сортировка массива Paladast Помощь студентам 2 18.01.2010 16:28
2-мерный динамический массив экземпляров класса. С++ Парсифаль Общие вопросы C/C++ 1 29.12.2009 14:35
Как Вы относитесь к кириллическим доменным именам?, пример зона .рф Levsha100 Свободное общение 43 26.10.2009 01:25
При создании нескольких экземпляров класса приложение зависает Mixasik Общие вопросы C/C++ 1 25.04.2009 13:25
Как выполнить условие по именам valerij Microsoft Office Excel 3 14.09.2008 21:55