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

Сортировка вектора по двум полям - C++

Восстановить пароль Регистрация
 
12712266
1 / 1 / 0
Регистрация: 06.09.2014
Сообщений: 38
25.11.2014, 20:01     Сортировка вектора по двум полям #1
Вектор состоит из структуры с двумя полями: день недели и время. Нужно отсортировать так, чтобы сначала в векторе хранились структуры, у которых день недели понедельник, потом, где день недели вторник и тд. Но если встречаются структуры, где день недели совпадает, надо отсортировать по времени.
В интернете нашла алгоритм, похожий на то, что мне надо, но не очень понимаю, помогите, пожалуйста

C++
1
2
3
4
5
6
7
8
9
10
11
struct sort_class_mass_pos
{
    bool operator() (MyObject i, MyObject j)
    {
        if (i.m_fMass==j.m_fMass)
            return (i.m_fPosX<j.m_fPosX);
        return (i.m_fMass<j.m_fMass);
    }
} sort_objectMassPos;
 
sort (myvector.begin(), myvector.end(), sort_objectMassPos);
struct st{
int time;
int day;
};

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
void input(vector <st> & base){
    st str;
    cout << "Выберите день недели " << endl;
    cout << "0 - Monday" << endl;
    cout << "1 - Tuesday" << endl;
    cout << "2 - Wednesday" << endl;
    cout << "3 - Thursday" << endl;
    cout << "4 - Friday" << endl;
    cout << "5 - Saturday" << endl;
    cin >> str.day;
    cout << "Выберите время " << endl;
    cout << "0: 8:00-9:20 " << endl;
    cout << "1: 9:30-10:50 " << endl;
    cout << "2: 11:00-12:20 " << endl;
    cout << "3: 12:40-14:00 " << endl;
    cout << "4: 14:20-15:40 " << endl;
    cout << "5: 15:50-17:10 " << endl;
    cin >> str.time;
    base.push_back(str);
}
 
int main(){
    setlocale(LC_ALL, "Russian");
    vector <st> myvector;
    input(myvector);
    system("pause");
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.11.2014, 20:01     Сортировка вектора по двум полям
Посмотрите здесь:

сортировка вектора C++
Сортировка вектора C++
Сортировка по полям структуры C++
C++ сортировка вектора
Сортировка вектора C++
Сортировка файла записей по двум критериям C++
Sort vector, сортировка по двум полям структуры C++
Сортировка вектора записей по двум полям одновременно C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Nosey
 Аватар для Nosey
1184 / 351 / 102
Регистрация: 22.10.2014
Сообщений: 786
Завершенные тесты: 2
25.11.2014, 22:12     Сортировка вектора по двум полям #2
C++
1
2
3
4
5
6
7
8
9
10
11
struct sort_class_mass_pos
{
    bool operator() (const st& i, const st& j)
    {
        if (i.day==j.day)
            return (i.time<j.time);
        return (i.day<j.day);
    }
} sort_objectDayTime;
 
sort (myvector.begin(), myvector.end(), sort_objectDayTime);
Yandex
Объявления
25.11.2014, 22:12     Сортировка вектора по двум полям
Ответ Создать тему
Опции темы

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