C++/Iteratory: Różnice pomiędzy wersjami
Usunięta treść Dodana treść
+< source>, poprawki |
poprawki |
||
Linia 92:
// wyswietlenie skladnikow wektora tab w petli przy pomocy iteratora
vector<int>::iterator
for(
{
cout<< *
}
return 0;
Linia 119:
// wyświetlenie skladników wektora tab w pętli przy pomocy odwróconego iteratora
vector<int>::reverse_iterator
for(
{
cout<<*
}
return 0;
Linia 134:
Należy jeszcze podkreślić, że przy użyciu odwróconego iteratora, by przejrzeć wszystkie elementy pojemnika nie używamy -– a ++! Rzeczywiście, chcemy przejrzeć wektor od końca do początku i właśnie ku temu służy odwrócony iterator – zdefiniowany w nim porządek strukturalny jest odwrotny do porządku w zwykłym iteratorze.
Powyższe przykłady pokazują jak dużym ułatwieniem dla korzystania z iteratorów są przeładowane operatory inkrementacji i dekremntacji: '''operator++''' i '''operator--''', których używamy tu jak na zwykłej liczbie int. Mamy tu także '''operator=''' podstawienia, jak i porównanie iteratorów - '''operator
=== Listy jedno- i dwukierunkowe ===
Linia 154:
// i wyswietlamy ja w petli do przodu
list<char>::iterator
cout<<"lista po kolei: ";
for(
{
cout<<*
}
//
cout<<"\nLista od tylu: ";
for(
{
cout<<*
}
// znow wyswietlamy liste - teraz przy pomocy odworconego iteratora
list<char>::reverse_iterator
cout<<"\nLista od tylu z odwroconym iteratorem: ";
for(
{
cout<<*
}
cout<<'\n';
Linia 184:
lista od tylu z odwroconym iteratorem: c b a
Przykład ten pokazuje nam dlaczego do przeglądania kontenera od końca należy używać iteratora odwróconego. Wyświetlenie elementu równego <tt>lista.end()</tt> przyniosło niespodziewany skutek - losowy symbol spoza naszej listy.
W liście jednokierunkowej nie mamy już tak szerokiego zakresu działania na iteratorach. Funkcje begin() i end() zwracają wartości iteratora (jednokierunkowego) „do przodu”, zaś odwrotny iterator wcale nie istnieje.
Linia 190:
===Zbiory===
Iterator w zbiorach działa jak w innych kontenerach. Iterator działający na zbiorze jest dwukierunkowy – możemy więc korzystać ze wszystkich operatorów przeciążonych dla iteratora dwukierunkowego. Dodatkowo (jak z własności zbioru wynika) należy wspomnieć, że metoda '''begin()''' daje dostęp iteratorowi do pierwszego elementu zbioru, który równocześnie posiada najniższy klucz. W zbiorach możemy także korzystać z odwróconych iteratorów.
<source lang="cpp">
Linia 198 ⟶ 197:
int main()
{
set<int> zbior;
zbior.insert(5);
Linia 205 ⟶ 203:
zbior.insert(11);
set<int>::iterator
for(
cout<<*
return 0;
|