4 / 4 / 0
Регистрация: 02.04.2014
Сообщений: 57
1

Ошибка при добавлении элемента в очередь с приоритетами

23.03.2017, 22:35. Показов 516. Ответов 0
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Адаптер контейнера - очередь с приоритетами
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
#include <D:\[...]\Time.h>
#include <iostream>
#include <queue>
#include <vector>
using namespace std;
 
typedef priority_queue<Time>P;//очередь
 
P make_queue(int n)
{
    P p;
    Time t;
    for(int i=0;i<n;i++)
    { 
        cin>>t;//ввод переменной
        p.push(t);//добавление ее в очередь
    }
    return p;//вернуть очередь как результат функции
} 
void main()
{
    Time t;
    P p;
    int n;
    cout<<"n? "; cin>>n;
    p=make_queue(n);
    system("pause");
}
Класс Time:
Кликните здесь для просмотра всего текста
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
#include <iostream>
using namespace std;
 
class Time
{
    int min, sec;
public:
    Time(){min=0;sec=0;};
    Time(int m, int s){min=m;sec=s;}
    Time(const Time&t){min=t.min;sec=t.sec;}
    int get_min(){return min;}
    int get_sec(){return sec;}
    void set_min(int m){min=m;}
    void set_sec(int s){sec=s;}
    //перегруженные операции
    Time&operator=(const Time&);
    Time operator-(const Time&);
    //Time operator/(const Time&);
    //Time operator/(const int&);
    bool operator >(const Time&);
    bool operator <(const Time&);
    bool operator ==(const Time&);
    //глобальные функции ввода-вывода
    friend istream& operator>>(istream&in, Time&t);
    friend ostream& operator<<(ostream&out, const Time&t);
    ~Time(void){};
};
//перегрузка операции присваивания
Time&Time::operator=(const Time&t)
{
    //проверка на самоприсваивание
    if(&t==this) return *this;
    min=t.min;
    sec=t.sec;
    return *this;
}
//перегрузка глобальной функции-операции ввода
istream&operator>>(istream&in, Time&t)
{
    cout<<"min? "; in>>t.min;
    cout<<"sec? "; in>>t.sec;
    return in;
}
//перегрузка глобальной функции-операции вывода
ostream&operator<<(ostream&out, const Time&t)
{
    return (out<<t.min<<":"<<t.sec);
}
bool Time::operator <(const Time &t)
{
    if(min<t.min)return true;
    if(min==t.min&&sec<t.sec)return true;
    return false;
}
bool Time::operator >(const Time &t)
{
    if(min>t.min)return true;
    if(min==t.min&&sec>t.sec)return true;
    return false;
}
bool Time::operator ==(const Time &t)
{
    if(min==t.min&&sec==t.sec)return true;
    return false;
}
Time Time::operator-(const Time&t)
{
    int temp1=min*60+sec;
    int temp2=t.min*60+t.sec;
    Time p;
    p.min=(temp1-temp2)/60;
    p.sec=(temp1-temp2)%60;
    if (sec<0) {sec=60+sec;min--;}
    if (min<0) {min=0;sec=0;}
    return p;
}

При запуске падает ошибка:
Кликните здесь для просмотра всего текста
c:\program files (x86)\microsoft visual studio 10.0\vc\include\xfunctional(125): error C2678: бинарный "<": не найден оператор, принимающий левый операнд типа "const Time" (или приемлемое преобразование отсутствует)
1> d:\study\программирование\files\lab11_2\lab11_2\time.h(21): может быть "bool Time::operator <(const Time &)"
1> при попытке сопоставить список аргументов "(const Time, const Time)"
1> c:\program files (x86)\microsoft visual studio 10.0\vc\include\xfunctional(124): при компиляции функции-члена "bool std::less<_Ty>::operator ()(const _Ty &,const _Ty &) const" класса шаблон
1> with
1> [
1> _Ty=Time
1> ]
1> c:\program files (x86)\microsoft visual studio 10.0\vc\include\queue(360): см. ссылку на создание экземпляров класса шаблон при компиляции "std::less<_Ty>"
1> with
1> [
1> _Ty=Time
1> ]
1> d:\study\программирование\files\lab11_4\lab11_4\lab11_4_main.cpp(11): см. ссылку на создание экземпляров класса шаблон при компиляции "std:riority_queue<_Ty>"
1> with
1> [
1> _Ty=Time
1> ]

Никак не пойму, с чем она связана. Помогите разобраться.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.03.2017, 22:35
Ответы с готовыми решениями:

Ошибка при добавлении элемента в список
Первый элемент всегда выводится правильно, у второго почему-то портится указатель. Третий вообще...

Ошибка при добавлении элемента в динамический массив
Всем привет! Создал класс для работы с дин.массивом. Нормально компилируется и выводит массив, но...

Ошибка при добавлении элемента в конец дека
2 игрока берут из своих колод по 1-й карте. Т.е. достают элемент дека из начала дека. В данном...

Ошибка при добавлении элемента в связный список
Помогите найти ошибку в программе,добавляю элементы в связный список,и если использую второй...

0
23.03.2017, 22:35
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.03.2017, 22:35
Помогаю со студенческими работами здесь

Очередь с приоритетами
Всем добрый день. Надо реализовать класс очереди с приоритетами. Нашел информацию: 1....

Очередь с приоритетами
Бьюсь над вопросом как вывести очередь на консоль в виде пирамиды/двоичного дерева? Очередь...

Класс-шаблон реализующий очередь с приоритетами
Пожалуйста, помогите выполнить задание, не могу понять как его сделать Создать класс-шаблон...

Программа вылетает при добавлении элемента
Здравствуйте ув. форумчане. Есть у меня в программе массив первого и второго типа. При начальном...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru