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:24]
gierek
iterator [2008/12/12 02:35] (aktualna)
gierek
Linia 3: Linia 3:
 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. ​ 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''​.
  
-==== Przykładowy 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 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 */
iterator.1229045084.txt.gz · ostatnio zmienione: 2008/12/12 02:24 przez gierek