Witam!
Mam do zrobienia takie zadanie:
http://main.edu.pl/user.phtml?op=showtask&task=sor&con=OIG1
Ponieważ chcę się nauczyć struktur, chcę to zrobić korzystając właśnie z nich.
Mój kod:
#include <iostream>
using namespace std;
struct napis
{
string s;
int dl;
napis(){};
napis(string a, int b)
{
s = a;
dl = b;
}
bool operator<(const napis &a, const napis &b)
{
if(a.dl < b.dl)
return true;
}
};
napis tab[150];
int main()
{
int a, b, n;
string s;
cin >> n;
for(int i=0; i<n; i++)
{
cin >> s;
tab[i] = napis(s, s.size());
}
return 0;
}
Chciałem napisać własny operator porównania, który najpierw porównywałby po długości, a jeśli bylyby równe to leksykograficznie. Kompilator wywala mi błąd:
uterii\main.cpp|15|error: `bool napis::operator<(const napis&, const napis&)' must take exactly one argument|
Tylko, że nie rozumiem, jak funkcja porównująca dwie rzeczy, musi wziąć dokładnie jeden argument!?
Wytłumaczy to ktoś? Jak mam to napisać?
pzdr
zaiks