С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
arking
0 / 0 / 0
Регистрация: 25.01.2014
Сообщений: 17
#1

Сортировка vectora обьектов функцией sort из algorithm - C++

10.02.2014, 14:46. Просмотров 361. Ответов 8
Метки нет (Все метки)

помогите написать предикат CompareStudent к функции sort

нужно чтобы вначале сортировало по Курсу, потом по Фамилии и Имени

есть класс Student
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
class Student
{
private:
    friend ostream& operator <<(ostream& stream, Student st);
    friend bool CompareStudent(Student St1, Student St2);
    
 
    string Name;
    string Surname;
    int Course;
    
public:
    string GetName()
    {
        return Name;
    }
    string GetSurname()
    {
        return Surname;
    }
    int GetCourse()
    {
        return Course;
    }
    void Init()
    {
        cout << "Enter Name -> ";
        cin >> Name;
        cout << "Enter Surname -> ";
        cin >> Surname;
        cout << "Enter Course -> ";
        cin >> Course;
    }
};
и Main
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
void main()
{   
    int countST=0;
    vector <Student> univercity;
    cout << "Enter count student-> ";
    cin >> countST;
    for (int i = 0; i < countST; ++i)
    {
        univercity.push_back(Student());
        univercity[i].Init();
    }
 
    //sort(univercity.begin(), univercity.end(), CompareStudent);
    
    system("pause");
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.02.2014, 14:46
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Сортировка vectora обьектов функцией sort из algorithm (C++):

Сортировка массива объектов функцией sort - C++
Не получается отсортировать массив объектов. После сортировки должен вывестись список отсортированных по мощности объектов. Код криворукий,...

Сортировка объектов функцией sort() по данным объекта - C++
Есть класс Man, при создании его объекта в вектор &quot;люди&quot; должно заносить этот объект. После вызова ф-ции сортировки должно сортировать...

algorithm std::sort - C++
Почему так делать нельзя? #include &lt;algorithm&gt; using namespace std; class T { private: int arr;

Пожскажите с функцией sort() или qsort() - C++
Есть программа, которая генерирует случайно 10 неповторяющихся чисел от 1 до 10 и записывает их в массив array, вот код: ...

Сортировка std::list ошибка компиляции algorithm 3868 error C2784 - C++
Добрый день, есть пользовательский класс, с вектором в качестве контейнера всё работает хорошо. А вот со списком вылетает ошибка: код:...

Классы. Сортировка обьектов класса - C++
нужно отсортировать страны в континенте..программа вроде работает..но где-то ошибка..помогите найти...мелкие ошибки плохо ищутся..а мне...

8
CheshireCat
Эксперт С++
2896 / 1245 / 78
Регистрация: 27.05.2008
Сообщений: 3,405
10.02.2014, 14:53 #2
(не проверял)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
bool CompareStudent(const Student& St1, const Student& St2)
{
    if (St1.Course < St2.Course)
        return true;
    else if (St1.Course > St2.Course)
        return false;
    else {
        if (St1.Surname < St2.Surname)
            return true;
        else if (St1.Surname > St2.Surname)
            return false;
        else
            return St1.Name < St2.Name;
    }
}
0
metaluga145
243 / 244 / 20
Регистрация: 08.04.2013
Сообщений: 927
10.02.2014, 14:57 #3
CheshireCat, не уверен, что для string перегружен оператор < или >
0
CheshireCat
Эксперт С++
2896 / 1245 / 78
Регистрация: 27.05.2008
Сообщений: 3,405
10.02.2014, 15:01 #4
Ну я там изложил идею.... Если операторы не перегружены для std::string (не помню на память, а лезть в MSDN лень ) - значит, можно тупо использовать strcmp().
0
metaluga145
243 / 244 / 20
Регистрация: 08.04.2013
Сообщений: 927
10.02.2014, 15:06 #5
CheshireCat, нашел. там есть функция compare, которая сравнивает в алфавитном порядке. пример использования тут
arking, кст, вместо предикатной функции можно оператор < перегрузить. это будет логичнее и правильнее.
0
Ilot
Модератор
Эксперт С++
1823 / 1181 / 232
Регистрация: 16.05.2013
Сообщений: 3,118
Записей в блоге: 5
Завершенные тесты: 1
10.02.2014, 15:08 #6
Цитата Сообщение от metaluga145 Посмотреть сообщение
CheshireCat, не уверен, что для string перегружен оператор < или >
Можете быть уверены. Эти опрераторы перегружены.
0
alsav22
5428 / 4823 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
10.02.2014, 15:09 #7
Цитата Сообщение от metaluga145 Посмотреть сообщение
не уверен, что для string перегружен оператор < или >
Перегружен.
http://ru.cppreference.com/w/cpp/string/basic_string
0
metaluga145
243 / 244 / 20
Регистрация: 08.04.2013
Сообщений: 927
10.02.2014, 15:10 #8
ладно, перегружены. нашел уже
0
CheshireCat
Эксперт С++
2896 / 1245 / 78
Регистрация: 27.05.2008
Сообщений: 3,405
10.02.2014, 15:13 #9
Цитата Сообщение от metaluga145 Посмотреть сообщение
уверены, что они перегружены?
Уверен. Стандарт, 21.3.
0
10.02.2014, 15:13
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.02.2014, 15:13
Привет! Вот еще темы с ответами:

q-sort сортировка - C++
Здраствуйте , не могу понять где в коде ошибка . Выдает такое :d:\program...

Сортировка Quick Sort - C++
Можно написать код и коментами.

сортировка вектора sort() - C++
программа заполняет вектор рандомными числами в диапазоне от 1 до 100 сортирует с помощью алгоритма sort(.begin(),.end()) - в...

Не работает сортировка Stl sort - C++
вот код сортировки массива обычным stl sort () #include&lt;conio.h&gt; #include&lt;iostream.h&gt; #include&lt;vector.h&gt; #include&lt;algorithm&gt; ...


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

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

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