Różnice między wybraną wersją a wersją aktualną.
Both sides previous revision Previous revision Next revision | Previous revision | ||
iterator [2008/12/12 02:30] gierek |
iterator [2008/12/12 02:35] (aktualna) gierek |
||
---|---|---|---|
Linia 9: | Linia 9: | ||
- Za pomocą iteratora można odwiedzić wszystkie elementy kontenera. Dla iteratora ''p'' zdefiniowane są instrukcje ''p++'' oraz ''++p''. | - Za pomocą iteratora można odwiedzić wszystkie elementy kontenera. Dla iteratora ''p'' zdefiniowane są instrukcje ''p++'' oraz ''++p''. | ||
- | ==== Przykładowy iterator ==== | + | ===== Przykładowy iterator ===== |
<code cpp> | <code cpp> | ||
/* klasa wezla kontenera */ | /* klasa wezla kontenera */ | ||
Linia 76: | Linia 76: | ||
</code> | </code> | ||
- | ==== Rodzaje iteratorów ==== | + | ===== Rodzaje iteratorów ===== |
Istnieje kilka typów iteratorów, w zależności od udostępnianych operacji: | Istnieje kilka typów iteratorów, w zależności od udostępnianych operacji: | ||
== iterator wejściowy == | == iterator wejściowy == | ||
Linia 100: | Linia 100: | ||
* ''i > j'', które jest prawdziwe gdy ''j < i'' | * ''i > j'', które jest prawdziwe gdy ''j < i'' | ||
* ''i >= j'' (analogicznie ''i <= j''), które jest prawdziwe gdy ''!(i < j)'' | * ''i >= j'' (analogicznie ''i <= j''), które jest prawdziwe gdy ''!(i < j)'' | ||
+ | |||
+ | |||
+ | Każdy typ jest też typem niższego poziomu. | ||
Rożne funkcje operujące na kontenerach wymagają iteratora spełniającego pewne właściwości, np. prototyp funkcji sort ma postać: | Rożne funkcje operujące na kontenerach wymagają iteratora spełniającego pewne właściwości, np. prototyp funkcji sort ma postać: | ||
Linia 110: | Linia 113: | ||
czyli podawane argumenty muszą udostępniać operacje ''i + n'', ''i - n'' itp. | czyli podawane argumenty muszą udostępniać operacje ''i + n'', ''i - n'' itp. | ||
- | ==== Iteratory w bibliotece standardowej ==== | + | ===== Iteratory w bibliotece standardowej ===== |
- | W bibliotece STL każda klasa kontenerowa posiada definicje odpowiedniego iteratora klasy. Dla jednej może być to wskaźnik (który również może być iteratorem, jako ze posiada wszystkie wymagane właściwości), dla innej może być to obiekt. Ponadto klasy te posiadają metody begin() oraz end(), które zwracają iteratory na pierwszy element kontenera oraz na pozycje za ostatnim elementem. | + | W bibliotece STL każda klasa kontenerowa posiada definicję odpowiedniego iteratora klasy. Dla jednej może być to wskaźnik (który również może być iteratorem, jako że posiada wszystkie wymagane właściwości), dla innej może być to obiekt. Ponadto klasy te posiadają metody ''begin()'' oraz ''end()'', które zwracają iteratory na pierwszy element kontenera oraz na pozycje za ostatnim elementem. |
== Iteratory dostępu swobodnego: == | == Iteratory dostępu swobodnego: == | ||
Linia 126: | Linia 129: | ||
* ''hash_set<T>::iterator'' | * ''hash_set<T>::iterator'' | ||
- | ==== Korzystanie z iteratorów ==== | + | ===== Przykład - Korzystanie z iteratorów ===== |
<code cpp> | <code cpp> | ||
/* Przyklad - korzystanie z iteratorow */ | /* Przyklad - korzystanie z iteratorow */ |