Kezdőoldal » Számítástechnika » Programozás » C++ for loop! Ezek a kifejezés...

C++ for loop! Ezek a kifejezések egyenértékűek?

Figyelt kérdés

Ha "it" egy valami::iterator, és "a" egy tömb (pl vektor), akkor egyenértékű a következő két kifejezés? Elképzelhető olyan tömb, vagy típus, amelyiknél nem?


for (it = a.begin(); it < a.end(); ++it) {...}

és

for (it = a.begin(); it != a.end(); ++it) {...}



2015. máj. 27. 10:09
 1/6 Tengor ***** válasza:
100%
Nem. Az iterátor egy pointernek tekinthető. Hogy egy pointer kisebb vagy nagyobb, mint a másik, az mindössze attól függ, hogy a memóriában hol helyezkedik el. Az, hogy az egymást követő elemek, egymáshoz viszonyítva milyen címeken helyezkednek el, az sok mindentől függ, de egyáltalán nem biztos, hogy az utolsó elemnek lesz a legnagyobb a címe.
2015. máj. 27. 10:28
Hasznos számodra ez a válasz?
 2/6 anonim ***** válasza:
100%

Nem minden iterátor típus hasonlítható össze <,> jelekkel. Ráadásul így sokszor nem biztos, hogy azt adja vissza, mint amire számítasz. Viszont minden iterátorra működik a it!=a.end(). Így nagyobb területet átfogó és rugalmasabb kódot írhatsz.


[link]

2015. máj. 27. 10:35
Hasznos számodra ez a válasz?
 3/6 A kérdező kommentje:

1-es, ezzel nem értek feltétlenül egyet, pl a std::vector elemei mindig egymást követik a memóriában (contiguous)


2-es, köszi. Voltaképpen attól féltem, hogy mi lesz, ha a ciklus közben megváltoztatom a tömböt (elemek hozzáadása, törlése), de a link szerint a !=.end() ezt is mindig kezeli.

2015. máj. 27. 10:48
 4/6 Tengor ***** válasza:
Az iterátor pont arra való, hogy az adatszerkezetet elrejtse. Mint írtam "egyáltalán nem biztos, hogy az utolsó elemnek lesz a legnagyobb a címe", tehát vektoron épp működik, halmazon v. láncolt listán pedig lehet, hogy nem.
2015. máj. 27. 11:03
Hasznos számodra ez a válasz?
 5/6 anonim ***** válasza:

"1-es, ezzel nem értek feltétlenül egyet, pl a std::vector elemei mindig

egymást követik a memóriában (contiguous)"

Szerintem nézz utána mi a különbség a szükséges és elégséges feltétel között.

2015. máj. 27. 13:05
Hasznos számodra ez a válasz?
 6/6 anonim ***** válasza:
Sok esetben praktikusabb range-based for ciklust alkalmazni.
2015. máj. 27. 13:55
Hasznos számodra ez a válasz?

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!