Hogyan szokás elegánsan megoldani a halmazokat C++ -ban?
Ugye most az std::set (std::unordered_set) használatáról beszélünk, nem valami otthon hegesztett halmazról?
Ha az ekvivalencia részbe beletartozik a többi adat is, akkor bizony kell a többi adat ellenőrzése is. Írsz egy operator<-t (set esetén) vagy operator==-t (unordered esetén), és úgy hozod létre a halmazt. A másik megoldás, ha nem akarod lekötni az operátort, akkor simán írsz egy összehasonlító függvényt, és azt is odaadod a halmaznak, fel vannak rá készítve, hogy másféleképpen legyenek hasonlítva az elemeik, mint a default.
explicit set ( const Compare& comp = Compare(),
const Allocator& = Allocator() );
Az ekvivalencia részbe pont hogy nem tartozik bele a többi adat. Alapból beletartozna, de az én problémámban nem. Egyébként köszi a választ, mert válaszoltál.
A másik megoldás, amin gondolkodtam az adat map-ként történő hozzárendelése.
Hát a válaszom elég általános volt, tartalmazza azt az esetet is: írsz egy összehasonlító függvényt, ami azt hasonlítja össze, ami neked kell a halmazban az egyediségvizsgálathoz. És ezzel hozod létre a halmazt.
Itt egy példa (az Example résznél), hogy hogy kell saját összehasonlítót megadni:
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!