Az mirt van hogy például egy stringekkel feltöltött vectornak az elemeit kitörlöm akkor mégis elt tudom érni a vector elemeit a [] operator segítségével?
Ha at függvényt hívok rá akkor összeomlik a program mert crashed lesz ez érthető mert üres a vector én pedig úgy akartam visszaadni az egyik elemét.
De ha [] operatorral próbálom visszaadni az üres vektor egy elemét akkor ott vissza adja.
Ez hogy lehet?
És mégis hogyan törlöd az elemeket?
A vektor valójában egy (okos) tömb, ezért ha elemet törölsz előfordulhat, hogy ott marad a memóriában egy érvénytelen területen.
Mert ténylegesen nem törlődik, minden erase hívás után.
Egyrészt maga az OS memóriafelszabadítást nem fogja byte-onként végezni csak adott granulációnak megfelelően, a hatékonyság miatt, ezen felül a maga a vector sem fog mindig memóriafelszabadítást kérni az OS-től, lerontaná a sebességet. Függ attól hogy miket tárolsz a vektorba, de ha csak primitív típusú értékeket akkor szinte biztos hogy túl is indexelheted a [] operátorral a vecor-t ha töröltél belőle ha nem,(persze kerüld az ilyesmit), sőt így csúnya dolgokat lehet csinálni, külön semmi ellenőrzés nincs rá hogy túlindexelted e, addig túl lehet lépni amíg nem lépsz át memóriaszegmenst, az at metódus meg index határellenőrzést csinál, nem engedi túlindexelni, viszont ez plusz overhead.
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!