Struct típusú vektor rendezése (c++)?
Sziasztok! Van egy ilyen structom:
struct Adatok{
int x;
int y;
float magassag;};
Iletve egy ilyen vektorom: vector<Adatok> v; ezt szeretném magasság szerint rendezni. Hogyan lehet megtenni?
Úgy tudom kell rá írni egy operátort, de nem tudom, pontosan hogy, illetve hogyan kell meghívni. Ezzel próbálkoztam:
bool operator<(Adatok a, Adatok b)
{
return a.magassag < b.magassag;
}
a main-en belül pedig:
sort(osszes.begin(),osszes.end());
Nos erre hibát dob (azt, hogy az operátornak csak egy argumentuma kellene, hogy legyen)
Ezzel is próbálkoztam:
struct Adatok{
int x;
int y;
float magassag;
bool CA(Adatok a, Adatok b)
{
return (a.magassag< b.magassag);
}
};
sort(osszes.begin(),osszes.end(),CA);
De erre is hibát dob (CA was not declared):(
Nem emlékszem pontosan már hogy van, főleg nem c++ban, így az okosabbak ne rágják le a fülem, csak iránymutatásnak adom.
Először is a sorthoz az Adatok osztály (struct...) operátorát kellene szerintem, mégpedig
bool Adatok::operator<(Adatok& const a) const jelleggel ha jól rémlik (egy paramétert adsz át, mert a másik a példány amin hívja)
és talán??? return this.magassag < a.magassag
Ami a lényeges: az adatok struct operátorát írd felül, ne globálisan, aztán a felülíró 1 paramétert vesz át, aminek szabály szerint const-ot is tudnia kell átvenni, és végül a this pointerrel éred el a hívott példányt.
Remélem érthető, és nem írtam túl hülyeséget, már nagyon régen cpp-ztem.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!