#c #struct #operator-overloading #priority-queue
#c #struct #оператор-перегрузка #приоритетная очередь
Вопрос:
#include<bits/stdc .h>
using namespace std;
struct vert
{
int n,m;
vert(int Node1=0,int Node2=0)
{
n=Node1,m=Node2;
}
bool operator<(vert const amp;obj)
{
return m<obj.m;
}
};
int main()
{
priority_queue<vert> q;
q.push(vert(1,2));
}
когда я запускаю этот код, я получаю следующую ошибку error: no match for 'operator<' (operand types are 'const vert' and 'const vert')
, я даже объявляю, что <
делает оператор, но он все равно не работает, как мне это исправить?
Комментарии:
1. Вы не должны включать этот заголовок или что-либо в «bits /», поскольку это нестандартно и является внутренним для конкретной реализации. Вы должны включить реальный заголовок c , <очередь>
Ответ №1:
Как говорится в сообщении об ошибке, используйте const
.
Попробуйте это
bool operator<(vert const amp;obj) const