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

Вывод map через ostream_iterator с использованием алгоритма reverse_copy!!! - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Область применения С/С++ http://www.cyberforum.ru/cpp-beginners/thread380887.html
Я программирую на C++ и С# под Windows. Хотелось бы узнать по конкретнее для каких сфер применяется С++ в настоящее время? На С# пишутся в основном офисные приложения(хотя можно написать и многое...
C++ Одномерный массив. Найти наименьшие среди элементов первого массива, которые не входят во второй массив. Задано два массива. Найти наименьшие среди элементов первого массива, которые не входят во второй массив. Ни как не могу придумать:cry:, помогите пожалуйста. вот что смог, программа немного не... http://www.cyberforum.ru/cpp-beginners/thread380885.html
C++ Найти в введеном числе цифру "1"
Если хотя бы один раз встречается "1" вывести "Yes" и закончить программу. Подскажите что не так тут. #include<iostream> using namespace std; int main(){ int a,r; cin>>a; ...
C++ Помогите написать программу, плиз...
Цель работы:Дана функция, заданная бесконечным рядом. С клавиатуры вводятся x и e(e - точность 0,001 - 0,00001), нужно вычислить бесконечную сумму с заданной точностью е. Вычисления прекращаются,...
C++ Открыть файл http://www.cyberforum.ru/cpp-beginners/thread380872.html
Как открыть существующий файл? Делать мне с ним ничего не надо, т.е. хендл не нужен, нужно просто, чтоб он открылся
C++ Отсортировать массив по возрастанию и убыванию Помогите пожалуйста сортировать данный массив по возрастанию и убыванию. (buble sort) подробнее

Показать сообщение отдельно
hektor
0 / 0 / 0
Регистрация: 14.10.2010
Сообщений: 15

Вывод map через ostream_iterator с использованием алгоритма reverse_copy!!! - C++

09.11.2011, 23:48. Просмотров 827. Ответов 4
Метки (Все метки)

У меня есть два класса Time и Patient, я засунул их в map (ключ Time, значение - Patient), и мне надо вывести через ostream_iterator в убывающем порядке (reverse_copy), скажите пожалуйста как это сделать!!!
Вот мой код.
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
#include <iostream>
#include <string>
#include <map>
#include <algorithm>
#include <fstream>
#include <iterator>
using namespace std;
    class Time
    {
    private:
        int hour;
        int minute;
        int second;
    public:
        Time ()
        {
            hour = 0;
            minute = 0;
            second = 0;
        }
        Time (int h, int m, int s)
        {
            hour = h;
            minute = m;
            second = s;
        }
        int getHour ()
        {
            return hour;
        }
        int getMinute ()
        {
            return minute;
        }
        int geSecond ()
        {
            return second;
        }
        friend istream & operator >> (istream & is, Time & ob)
        {
            is >> ob.hour >> ob.minute >> ob.second;
            return is;
        }
        friend ostream & operator << (ostream & os, Time & ob)
        {
            os << ob.hour << " " << ob.minute << " " << ob.second << endl;
            return os;
        }
    };
    class Patient
    {
    private:
        string name;
        Time time;
    public:
        Patient()
        {
            name = "";
        }
        friend istream & operator >> (istream & is, Patient & ob)
        {
            is >> ob.time >> ob.name;
            return is;
        }
        friend ostream & operator << (ostream & os, Patient & ob)
        {
            os << ob.time << " " << ob.name << endl;
            return os;
        }
        Time get ()
        {
            return time;
        }
    };
    struct byTime
    {
        bool operator ()(Time a, Time ob)
        {
            if (a.getHour() < ob.getHour())
            {
                return true;
            }
            if (a.getHour() <= ob.getHour() && a.getMinute() < ob.getMinute())
            {
                return true;
            }
            if (a.getHour() <= ob.getHour() && a.getMinute() <= ob.getMinute() && a.geSecond() <= ob.geSecond())
            {
                return true;
            }
            else
            {
                return false;
            }
        }
    };
typedef map<Time, Patient, byTime> Map;
int main ()
{
    ifstream is ("input.txt");
    int n;
    is >> n;
    Map a;
    Map::iterator it;
    Map::iterator it2;
    Patient* ob  = new Patient [n];
    for (int i = 0; i < n; i++)
    {
        is >> ob[i];
        a.insert(pair<Time,Patient>(ob[i].get(),ob[i]));
    }
    is.close();
    ofstream of ("output");
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru