Ha csak az elemeken akarunk végigfutni iterátorral, akkor az std::vector és az std::list ebből a szempontból ugyanolyan gyors?
Természetesen nem. De miért nem méred ki? Nagyon könnyű erre példaprogramot írni.
A magyarázat: a vector iterátora gyakorlatilag egy pointer, amit csak sizeof(T)-vel kell növelgetni, a lista iterátor viszont egy indirekción megy át.
Értem, akkor viszont kétféle iterátor is lehetne, vagy nem tudom van-e olyan konténer ami ezt megvalósítja.
Szóval nekem olyan konténer kéne, ami nem allokál újra, ha elem teszek vagy veszek ki belőle, viszont végig tudok olyan gyorsan menni rajta, mint egy vektoron. A kettő nem zárja ki egymást, hiszen az elemek lehetenek egymás után sorban a memóriában, csak legfeljebb nem olyan sorrendbe, ahogy betettem őket, de ez a bejárás során lényegtelen. a verem hasonló, de abból nem lehet középről kivenni.
Próbálom értelmezni amit írtál.
"Szóval nekem olyan konténer kéne, ami nem allokál újra, ha elem teszek vagy veszek ki belőle, viszont végig tudok olyan gyorsan menni rajta, mint egy vektoron."
Vagyis akkor statikusan vagy legalábbis fix-en le van foglalva a memóriába, ha elemeket veszek ki akkor nem nő a szabad memória, ezáltal korlátozva van az elemszám a rendelkezésre álló memóriától függetlenül, akár nagyon memóriapazarló is lehet.
"A kettő nem zárja ki egymást, hiszen az elemek lehetenek egymás után sorban a memóriában, csak legfeljebb nem olyan sorrendbe, ahogy betettem őket, de ez a bejárás során lényegtelen."
Vagyis a bejárás sorrendje lényegtelen, ami szaknyelven mondhatnám diszkrét ismétléses vezérlési szerkezetnek is.
Mert ha erre gondoltál akkor, ilyen konténert nem ismerek, de piszkok egyszerű az lenne implementálni a vector-hoz meg a list-hez képest.
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, 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!