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

Отсортировать multimap по pair->second - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Обработка строк с использованием указателей: вывести слова в два столбика, по четности их длины http://www.cyberforum.ru/cpp-beginners/thread1206861.html
Дана строка. Распечатать слова в два столбика. 1 столбик — слова, имеющие четное количество букв, а второй — нечётное. Добавлено через 42 секунды help! help!
C++ Сформировать матрицу 11*3 и поменять местами столбец, содержащий минимальный элемент, с первым столбцом помогите пожалуйста с заданием: из 33 положительных, отрицательных и нулевых значений чисел сформируйте матрицу 11*3. поменяйте местами столбец содержащий минимальный элемент, с первым столбцом, выдайте преобразованную матрицу. предусмотреть если минимум находится в 1 столбце. как вижу это я: 1) задание матрицы 2) поиск минимального значения 3)элемент1 записываем в память столбца н 4)... http://www.cyberforum.ru/cpp-beginners/thread1206858.html
Определить, попадает ли точка в область C++
определить, попадает ли точка с заданными координатами х,у в заштрихованную область. условие попадания точки в заштрихованную область записать одним предложением. область 1: x*x+y*y>=4; x<=-2, y>=2; область 2: x-2y<=0; 0<x<=2, -1<y<=0 подобные задачи встречались здесь на сайте, подобно им я попробовала сделать программу... #include<stdio.h> #include<conio.h> #include<math.h>
C++ Поиск элемента одной строки во второй с последующим исключением
Дано две строки, нужно сравнить и убрать из первой символы которые есть во второй. Например: 1: abcdeeedsasa 2: gjmxvde result: abcsasa Вот мой вариант кода(метод класса), но цикл завершается сразу после того как найдет одинаковый символ, т.е. 1: abcdeeedsasa 2: gjmxvde
C++ Массив структур или объект http://www.cyberforum.ru/cpp-beginners/thread1206847.html
есть класс class myclass { struct mystruct { int num;//номер char name;//имя }; }; Допустим, 10 сотрудников.
C++ Определить число листьев на каждом уровне дерева Нужно составить такую функцию. Именно на каждом отдельном уровне, а не по дереву вообще. подробнее

Показать сообщение отдельно
dzrkot
zzzZZZ...
518 / 348 / 53
Регистрация: 11.09.2013
Сообщений: 1,995

Отсортировать multimap по pair->second - C++

13.06.2014, 09:15. Просмотров 1111. Ответов 10
Метки (Все метки)

отсортировать multimap по полю second->year , впринципе без разницы по убыванию или возрастанию
Я уже много глупостей в коде натворил типа перегрузки <> для pair и т.п., было предикатов несколько, без результатно, так что прошу помочь, у меня как-то никак

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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
#include <iostream>
#include <algorithm>
#include <map>
#include <vector>
using namespace std;
 
struct book                
    {
    string avtorName;
    string bookName;
    int year;
    int nmbBooks;
    };
 
bool sorted(pair <string,book> &a1,pair <string,book> &b1)
    {
    return (a1.second.year>b1.second.year);
    }
 
void show(const multimap <string, book> &a)         
    {
    multimap <string, book>::const_iterator it;      
    system("cls");                               
    int i=1;                            
        for(it=a.begin();it!=a.end();it++)  
            {
            cout<<i<<")"<<endl;
            cout<<"Имя автора : "<<it->second.avtorName<<endl;     
            cout<<"Название книги : "<<it->second.bookName<<endl;  котором уже 1ое значение - ключ(автор),
            cout<<"Год издания : "<<it->second.year<<endl;        
            cout<<"Количество книг в библиотеке : "<<it->second.nmbBooks<<endl;
            i++;
            }
    }
void show2(pair <string,book> it)
{
    cout<<"Имя автора : "<<it.second.avtorName<<endl;    
    cout<<"Название книги : "<<it.second.bookName<<endl;  
    cout<<"Год издания : "<<it.second.year<<endl;         
    cout<<"Количество книг в библиотеке : "<<it.second.nmbBooks<<endl;
}
 
void add(multimap <string, book> &a)        // добавление элемента
    {
    book b;                              
    cout<<"Введите имя автора : ";          //
    getline(cin,b.avtorName);               //
    cout<<"Введите название книги : ";      //
    getline(cin,b.bookName);                //
    cout<<"Введите год издания : ";         //
    cin>>b.year;
    cout<<"Введите количество книг в библиотеке : ";
    cin>>b.nmbBooks;
    a.insert(make_pair(b.avtorName,b));    
    }
 
 
void eraseBook(multimap <string, book> &a,string &str)  // функция удаления книги
{
    multimap <string, book>::iterator it;          
    for(it=a.begin();it!=a.end();it++)           
        if(it->second.bookName==str)              
            a.erase(it);                          
}
 
 
void sortBook(multimap<string , book> a)
{
vector <pair <string,book> > v(a.begin(),a.end());
vector <pair <string,book> >::iterator it;
vector <pair <string,book> >::iterator it2;
vector <pair <string,book> >::iterator it_temp;
for(it=v.begin(),it2=it+1;it2!=v.end();it++,it2++)
    {
    if (it->second.year<it_temp->second.year)
        {
         // как тебя сортировать ...?
        }
    }
for_each(v.begin(),v.end(),show2);
}
 
int main()
{
setlocale(LC_ALL,"Russian"); 
string str;                 
int x;                      
multimap<string , book> a;     
do
{
cout<<"\nДля добавления новой записи нажмите 1:"<<endl;
cout<<"Для просмотра базы данных нажмите 2:"<<endl;
cout<<"Для удаления книги нажмите 3:"<<endl;
cout<<"Для просмотра базы данных, отсортированной по годам издания нажмите 4:"<<endl;
cin>>x;
    switch(x)                функцию
    {
    case 1:
        cin.get();
        system("cls");
        add(a);
    break;
    case 2:
        system("cls");
        show(a);
    break;
    case 3:
        cout<<"Введите название книги : ";
        cin>>str;
        eraseBook(a,str);
    break;
    case 4:
        sortBook(a);
    break;
    }
 
}while(cin.good());
 
 
return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru