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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 17, средняя оценка - 4.71
kilik
5 / 5 / 1
Регистрация: 15.11.2010
Сообщений: 58
#1

Сортировка массива структур по выбранному полю с помощью алгоритма std::sort - C++

28.10.2011, 19:22. Просмотров 2260. Ответов 1
Метки нет (Все метки)

Не знаю, как правильно передать функцию сравнения в std::sort.
Кроме того в моей структуре есть поля одного типа, мне кажется будет не правильно писать одинаковые функции сравнения для каждого поля.
Вот структура моей программы:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
struct HOUSE{
    string street;
    string number;
    string num_floors;
    string num_apartment;
    int num_residents;
 
};
template <class T_str>
class A{
public:
    T_str mas[100];
    sort_ist(/*sor принять ф-ю сравнения*/){std::sort(bud,buf+100,sor);}
};
 
class B{
public:
    A<HOUSE> test;
    bool sor(string a,string b){return a<b;}//НЕ ПРАВИЛЬНО //функция сравнения 
 
    void fsort(){ test.sort_ist(/*тут должен передать по какому полю сортировать*/) }
};
Тут эта тема поднималась, но я не смог разобраться http://www.rsdn.ru/forum/cpp/1030325.flat.aspx
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.10.2011, 19:22
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Сортировка массива структур по выбранному полю с помощью алгоритма std::sort (C++):

Std::min_element по заданному полю массива структур - C++
Есть структура Point{double x,y}. Есть вектор vector&lt;Point&gt;. Как правильно определить функцию сравнения точек по заданной координате...

Сортировка массива c++ std :: sort() - C++
Дан двумерный массив символов char M, надо отсортировать его при помощи std :: sort(), построчно, т.е. допустим было 00011 11111 ...

Сортировка массива с использованием алгоритма стандартной библиотеки шаблонов Sort() - C++
6.Напишите программу на языке программирования С++, сортирующую массив с использованием алгоритма стандартной библиотеки шаблонов sort().

Сортировка массива структур по определенному полю - C++
Всем привет...со структурами проблемка возникла...затупил)Задание состоит в следующем: Ввести структуру Студент с полями...

Сортировка массива структур по одному полю - C++
Приветствую. Задача: отсортировать по возрастанию структуру по одному полю. Вчера поднимал тему:...

Сортировка массива структур по заданному полю - C++
Задание под вариантом такое : Упорядочить список студентов по предмету физика, и вывести весь список. С 1 пунктом я вроде справился, а...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
ForEveR
В астрале
Эксперт С++
7972 / 4734 / 321
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
28.10.2011, 20:14 #2
Не будет он так сортировать. Перегрузите для структуры оператор < тогда да.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
struct HOUSE{
        string street;
        string number;
        string num_floors;
        string num_apartment;
        int num_residents;
 
};
template <class T_str>
class A{
public:
        T_str mas[100];
        template<class Predicate>
        sort_ist(Predicate sor){std::sort(bud,buf+100,sor);}
};
 
class B{
public:
        A<HOUSE> test;
        bool sor(const T_str& a, const T_str& b){return a<b;}//НЕ ПРАВИЛЬНО //функция сравнения 
 
        void fsort(){ test.sort_ist(/*тут должен передать по какому полю сортировать*/) }
};
Добавлено через 3 минуты
Или в sor явно указывайте поля. К примеру.
C++
1
return a.street < b.street;
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.10.2011, 20:14
Привет! Вот еще темы с ответами:

Сортировка массива структур по одному полю - C++
Приветствую. Есть задача, практически аналогичная моей: http://www.cyberforum.ru/cpp-beginners/thread1403598.html В этом примере...

Сортировка массива структур по заданному полю - C++
Здравствуйте. Нужна помощь в сортировке. Вот само задание: Составить таблицу, содержащую следующие сведения о сотрудниках кафедры: ...

Сортировка массива(вектора)структур по одному полю - C++
Код:#include &lt;iostream&gt; #include &lt;sstream&gt; #include &lt;vector&gt; #include &lt;algorithm&gt; struct Person{ std::string surname,name; ...

Сортировка массива (вектора) структур по заданному полю - C++
Нужно отсортировать массив по полю структуры. Все поля типа string. struct DatabaseData{ std::string aPointOfDeparture;//Пункт...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru