Narzędzia użytkownika

Narzędzia witryny


iterator

Różnice

Różnice między wybraną wersją a wersją aktualną.

Odnośnik do tego porównania

Both sides previous revision Previous revision
Next revision
Previous revision
iterator [2008/12/12 02:22]
gierek
iterator [2008/12/12 02:35] (aktualna)
gierek
Linia 1: Linia 1:
 ====== Iterator ====== ====== Iterator ======
  
-Iterator jest uogolniona ​reprezentacja procesu poruszania ​sie po kontenerze, ​niezalezna ​od typu danych przechowywanych w kontenerze, ale takze od struktury danych samego kontenera. ​+Iterator jest uogólnioną ​reprezentacja procesu poruszania ​się po kontenerze, ​niezależną ​od typu danych przechowywanych w kontenerze, ale także ​od struktury danych samego kontenera. ​
  
-==== Cechy iteratora: ====+===== Cechy iteratora: ​=====
   - Możliwość wyłuskania iteratora w celu uzyskania dostępu do wartości, na którą wskazuje. Jeśli p jest iteratorem, to jest zdefiniowane wyrażenie ''​*p''​.   - Możliwość wyłuskania iteratora w celu uzyskania dostępu do wartości, na którą wskazuje. Jeśli p jest iteratorem, to jest zdefiniowane wyrażenie ''​*p''​.
   - Możliwość przypisania jednego iteratora do drugiego. Jeśli ''​p''​ i ''​q''​ są iteratorami,​ to zdefiniowane jest ''​p = q''​.   - Możliwość przypisania jednego iteratora do drugiego. Jeśli ''​p''​ i ''​q''​ są iteratorami,​ to zdefiniowane jest ''​p = q''​.
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''​.
  
-==== Przykladowy ​iterator ====+===== Przykładowy ​iterator ​=====
 <code cpp> <code cpp>
 /* klasa wezla kontenera */ /* klasa wezla kontenera */
Linia 76: Linia 76:
 </​code>​ </​code>​
  
-==== Rodzaje ​iteratorow ​====+===== 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 108: Linia 111:
 </​code>​ </​code>​
  
- 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 kazda klasa kontenerowa posiada ​definicje ​odpowiedniego iteratora klasy. Dla jednej ​moze byc to wskaznik ​(ktory rowniez moze byc iteratorem, jako ze posiada wszystkie wymagane ​wlasciwosci), dla innej moze byc to obiekt. Ponadto klasy te posiadaja ​metody begin() oraz end(), ​ktore zwracaja ​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 ​dostepu ​swobodnego: ==+== Iteratory ​dostępu ​swobodnego: ==
     * ''​T*''​ (wskaznik)     * ''​T*''​ (wskaznik)
     * ''​vector<​T>::​iterator''​     * ''​vector<​T>::​iterator''​
Linia 123: Linia 126:
     * ''​list<​T>::​iterator ''​     * ''​list<​T>::​iterator ''​
  
-== Iteratory ​postepujace: ==+== Iteratory ​postępujace: ==
  * ''​hash_set<​T>::​iterator''​  * ''​hash_set<​T>::​iterator''​
  
-==== Korzystanie z iteratorow ​====+===== Przykład - Korzystanie z iteratorów =====
 <code cpp> <code cpp>
 /* Przyklad - korzystanie z iteratorow */ /* Przyklad - korzystanie z iteratorow */
iterator.1229044971.txt.gz · ostatnio zmienione: 2008/12/12 02:22 przez gierek