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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 17, средняя оценка - 4.71
kilik
5 / 5 / 1
Регистрация: 15.11.2010
Сообщений: 58
28.10.2011, 19:22     Сортировка массива структур по выбранному полю с помощью алгоритма std::sort #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
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.10.2011, 19:22     Сортировка массива структур по выбранному полю с помощью алгоритма std::sort
Посмотрите здесь:

C++ Сортировка массива(вектора)структур по одному полю
Сортировка массива с использованием алгоритма стандартной библиотеки шаблонов Sort() C++
C++ HOWTO: сортировка массива структур по произвольному полю
C++ Сортировка массива структур через switch по любому полю
C++ Сортировка массива структур по определенному полю
C++ Сортировка массива (вектора) структур по заданному полю
Std::min_element по заданному полю массива структур C++
Сортировка массива c++ std :: sort() C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
28.10.2011, 20:14     Сортировка массива структур по выбранному полю с помощью алгоритма std::sort #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;
Yandex
Объявления
28.10.2011, 20:14     Сортировка массива структур по выбранному полю с помощью алгоритма std::sort
Ответ Создать тему
Опции темы

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