Iterowanie ustawionego STD w C ++

Iterowanie ustawionego STD w C ++
Poniżej znajduje się zestaw nazw owoców: „Passion Fruit”, „Banana”, „Watermelon”, „Blackberry”, „winogrona”

W C ++ zestaw tak wpisany do tego, jest litralem lub literacją tablicy. Jest to również lista inicjalizator. W C ++ iterator jest klasą. Chociaż jest to klasa, jego obiekt zachowuje się jak wskaźnik. Gdy jest zwiększony, wskazuje na następny element. Po zmniejszeniu wskazuje na poprzedni element. Podobnie jak wskaźnik może być dereferencyjny przez operatora pośredniego, iterator może być również dereferencyjny w ten sam sposób. Istnieją różne rodzaje iteratorów dla zestawu w C++. W tym artykule wyjaśniono różne iteratory dla zestawu i jak z nich korzystać.

Program kodowania powyższego zestawu lub dowolnego zestawu powinien rozpocząć się od następujących:

#włączać
#włączać
#włączać
za pomocą przestrzeni nazw Std;

Pierwsza linia zawiera bibliotekę iostream. Jest to potrzebne dla terminalu (konsoli). Druga linia zawiera bibliotekę zestawu. Jest to potrzebne do ustawiania programowania. Trzeci wiersz zawiera bibliotekę ciągów. Aby użyć ciągów, należy uwzględnić klasę ciągów; W przeciwnym razie to wskaźniki do sznurków, które będą sortowane, a nie same literały alfabetyczne. Są to wszystkie subbibrary z głównej standardowej biblioteki w C++. STD w tytule tego artykułu oznacza standard. Czwarta linia nie jest dyrektywą. To jest stwierdzenie. Nalega, aby każda nazwa używana w programie, która nie jest poprzedzona przestrzenią nazw użytkowników, pochodzi ze standardowej przestrzeni nazw.

Klasa iteratora nie musi być uwzględniona. Jest już w klasie set.

Uwaga: Po wstawieniu wartości do zestawu są one sortowane wewnętrznie w kolejności rosnącej z ustawieniami domyślnymi.

Iterator

Ten obiekt klasy iteratora jest zwracany przez funkcje elementów początkowe () lub end (). Funkcja członka stear () zwraca iterator, który wskazuje na pierwszy element zestawu. END () Funkcja członka zwraca iterator, który wskazuje tuż po ostatnim elemencie zestawu.

Ten iterator działa z == lub != operator, ale nie działa z operatorami =. Chociaż ten iterator nie jest oficjalnie stały, wartość, której wskazuje, może nie zostać zmieniona. Poniższy kod pokazuje, jak używać tego iteratora:

#włączać
#włączać
#włączać
za pomocą przestrzeni nazw Std;
int main ()

ustawić ST („Passion Fruit”, „Banana”, „Watermelon”, „Blackberry”, „winogrona”);
dla (set:: iterator iter = st.zaczynać(); iter != st.koniec(); ITER ++)
Cout << *iter << ", ";
Cout << endl;
powrót 0;

Wyjście to:

banan, jeżyna, winogrona, namiętności, arbuz,

Aby zmienić (zmodyfikować) wartość zestawu, funkcja usuwania zestawu musi być użyta do usuwania elementu. Następnie można włożyć nową wartość. Po wstawieniu nastąpi sortowanie wewnętrzne, a wartość może nie pasować dokładnie tam, gdzie była stara wartość. Modyfikowanie lub zmiana wartości (lub elementu) zestawu jest dyskusja, od pewnego innego czasu - patrz później.

reverse_iterator

To jest przeciwieństwo powyższego iteratora. Ten obiekt klasy reverse_iterator jest zwracany przez funkcje członkowskie rbegin () lub rend (). Funkcja członka rbegin () zwraca iterator, który wskazuje ostatni element zestawu. Funkcja członka Rend () zwraca iterator, który wskazuje tuż przed pierwszym elementem zestawu.

Ten reverse_iterator działa z == lub != operator, ale nie działa z operatorami =. Chociaż ten iterator nie jest oficjalnie stały, wartość, której wskazuje, może nie zostać zmieniona. Poniższy kod pokazuje, jak używać tego iteratora:

ustawić ST („Passion Fruit”, „Banana”, „Watermelon”, „Blackberry”, „winogrona”);
dla (set:: reverse_iterator iter = st.rbegin (); iter != st.rozdzierać(); ITER ++)
Cout << *iter << ", ";
Cout << endl;

Wyjście to:

Arbuz, namiętność, winogrona, jeżyna, banan,
posortowane w kolejności odwróconej.

const_iterator

Ten obiekt klasy Const_iterator jest zwracany przez funkcje członkowskie Cbegin () lub Cend (). Funkcja członka Rbegin () zwraca const_iterator, który wskazuje na pierwszy element zestawu. Funkcja członka Rend () zwraca const_iterator, który wskazuje tuż po ostatnim elemencie zestawu.

Ten const_iterator działa z == lub != operator, ale nie działa z operatorami =. Ten iterator jest oficjalnie stały, a wartość, której wskazuje, nie można zmienić. Poniższy kod pokazuje, jak używać tego iteratora:

ustawić ST („Passion Fruit”, „Banana”, „Watermelon”, „Blackberry”, „winogrona”);
dla (set:: const_iterator iter = st.cbegin (); iter != st.Cend (); ITER ++)
Cout << *iter << ", ";
Cout << endl;

Wyjście to:

banan, jeżyna, winogrona, namiętności, arbuz,

const_reverse_iterator

To jest przeciwieństwo powyższego iteratora. Ten obiekt klasy const_reverse_iterator jest zwracany przez funkcje członka crbegin () lub crend ​​(). Funkcja członka crbegin () zwraca iterator, który wskazuje ostatni element zestawu. Crend () Funkcja członka zwraca iterator, który wskazuje tuż przed pierwszym elementem zestawu.

Ten const_reverse_iterator działa z == lub != operator, ale nie działa z operatorami =. Ten iterator jest oficjalnie stały, a wartość, której wskazuje, nie można zmienić. Poniższy kod pokazuje, jak używać tego iteratora:

ustawić ST („Passion Fruit”, „Banana”, „Watermelon”, „Blackberry”, „winogrona”);
dla (set:: const_reverse_iterator iter = st.crbegin (); iter != st.Crend (); ITER ++)
Cout << *iter << ", ";
Cout << endl;

Wyjście jest

Arbuz, namiętność, winogrona, jeżyna, banan,
posortowane w kolejności odwróconej.

const_iterator Cbegin () i Cend ()

Cbegin () zwraca bezwarunkowy stały iterator do pierwszego elementu zestawu. CEND () zwraca bezwarunkowy stały iterator, który jest tuż po ostatnim elemencie zestawu. Poniższy kod pokazuje, jak go używać:

ustawić ST („Passion Fruit”, „Banana”, „Watermelon”, „Blackberry”, „winogrona”);
dla (set:: const_iterator iter = st.cbegin (); iter != st.Cend (); ITER ++)
Cout << *iter << ", ";
Cout << endl;

Wyjście to:

banan, jeżyna, winogrona, namiętności, arbuz,
const_reverse_iterator crbegin () i Crend ()

To jest przeciwieństwo powyższego. Poniższy kod pokazuje, jak go używać:

ustawić ST („Passion Fruit”, „Banana”, „Watermelon”, „Blackberry”, „winogrona”);
dla (set:: const_reverse_iterator iter = st.crbegin (); iter != st.Crend (); ITER ++)
Cout << *iter << ", ";
Cout << endl;

Wyjście to:

Arbuz, namiętność, winogrona, jeżyna, banan,

Wniosek

Wszystkie iteratory zwrócone przez funkcje członka obiektu Set działają z == lub != operator, ale nie pracuj z operatorami =. Wszystkie z nich można zwiększyć lub zmniejszyć. Wszystkie iteratory zwrócone przez funkcje elementów zestawu są bezpośrednio lub pośrednio stałe. Oznacza to, że wartości, których wskazują, nie można zmienić za pomocą iteratora.

Aby zmienić (zmodyfikować) wartość zestawu, funkcja usuwania zestawu musi być użyta do usuwania elementu. Następnie można włożyć nową wartość. Po wstawieniu nastąpi sortowanie wewnętrzne, a wartość może nie pasować dokładnie tam, gdzie była stara wartość. Modyfikowanie lub zmiana wartości (lub elementu) zestawu jest dyskusją na jakiś czas - patrz później.