C++-ban mikor érdemes használni std::any-t, mikor std::variant-ot, és mikor std::optional-t?
Mikor érdemes, vagy mikor lehetséges? ;)
Nem akarok rosszmájúnak tűnni, de akkor, ha a programod nincs jól megtervezve. Nem hatékonyak, és könnyen belerondíthatnak az algoritmusba.
Every time you want to use a union use std::variant.
Every time you want to use a void* use std::any.
Every time you want to return nullptr as an indication of an error use std::optional.
"Az optional az inkább a hibakezelésre jó, olyan, mintha egy (T,bool) párod
lenne. Pl. int visszatérő értékű függvény hogyan jelezze a hibát? A 0 vagy
-1 is lehet "helyes" visszatérő érték. optional<int> erre pont jó.
A variant és az any olyan unio, ami tudja magáról, melyik típust raktuk
bele. A különbség, hogy variantnál előre tudjuk, melyik N típus
lehetséges, az any-be meg bármit beletehetsz, nem kell előre tudnod, mi
lehet az, cserébe rosszabb (lehet) a hatékonysága.
"
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!