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

Сортировка массива(вектора)структур по одному полю - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 37, средняя оценка - 4.97
diagon
Higher
 Аватар для diagon
1920 / 1186 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
04.05.2011, 14:07     Сортировка массива(вектора)структур по одному полю #1
Код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <sstream>
#include <vector>
#include <algorithm>
struct Person{
    std::string surname,name;
    unsigned school,points;
};
int main(){
    std::vector<Person> arr;
    int N;
    std::cin >> N;
    arr.resize(N);
    for (int i = 0; i < N; i++)
        std::cin >> arr[i].surname >> arr[i].name >> arr[i].school >> arr[i].points;
    std::sort(arr[0].points,arr[N-1].points);   //???
    return 0;
}
Со структурами раньше не работал, поэтому затрудняюсь с их сортировкой... Желательно стандартными функциями, вроде qsort или std::sort
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
rangerx
1908 / 1517 / 139
Регистрация: 31.05.2009
Сообщений: 2,876
04.05.2011, 14:32     Сортировка массива(вектора)структур по одному полю #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
//...
struct PointsCmp
{
    bool operator()(const Person& a, const Person& b) const
    {
        return a.points < b.points;
    }
};
 
int main()
{
    //...
    std::sort(arr.begin(), arr.end(), PointsCmp());
    //...
    return 0;
}
Choopa
 Аватар для Choopa
17 / 17 / 0
Регистрация: 03.04.2011
Сообщений: 89
04.05.2011, 14:37     Сортировка массива(вектора)структур по одному полю #3
Вот пример
Вложения
Тип файла: txt sort.txt (1.0 Кб, 415 просмотров)
asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
04.05.2011, 14:41     Сортировка массива(вектора)структур по одному полю #4
Или так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include <sstream>
#include <vector>
#include <algorithm>
 
struct Person{
        std::string surname,name;
        unsigned school,points;
        bool operator< (const Person& a) const{
          return points < a.points;
        }
};
 
int main(){
        std::vector<Person> arr;
        int N;
        std::cin >> N;
        arr.resize(N);
        for (int i = 0; i < N; i++)
                std::cin >> arr[i].surname >> arr[i].name >> arr[i].school >> arr[i].points;
        std::sort(arr.begin(),arr.end());   //???
        return 0;
}
Yandex
Объявления
04.05.2011, 14:41     Сортировка массива(вектора)структур по одному полю
Ответ Создать тему
Опции темы

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