Jak zmienić zestaw na wektor w C ++

Jak zmienić zestaw na wektor w C ++
Zestaw można utworzyć w C ++ w następujący sposób:
ustawić p = „j”, „i”, „h”, „g”, „f”;

Następnie występuje sortowanie wewnętrzne, a wartości zestawu stają się ułożone w następujący sposób na podstawie ustawień domyślnych:

„F”, „g”, „h”, „i”, „j”

Gdy zestaw zostanie przekonwertowany na wektor, to nowe porozumienie jest utrzymywane do momentu zmiany. Aby kodować zestaw w programie C ++, biblioteka zestawu musi zostać uwzględniona. Aby kodować wektor w programie C ++, biblioteka wektorowa musi zostać uwzględniona.

Istnieje wiele sposobów zmiany zestawu w wektor. W tym artykule wyjaśniono trzy proste sposoby. Dwie z tych metod, które należy wyjaśnić w tym artykule, zajmują się funkcjami członkowskimi klasy wektorowej. Druga metoda dotyczy funkcji kopiowania biblioteki algorytmu.

Zakres od zestawu

Z zestawu można uzyskać zakres elementów. Ten zakres nie obejmowałby ostatniego wskazanego elementu. Zakres pojawia się w dwóch iteratorach tego samego typu dla zestawu. Poniższy program ilustruje to:

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

ustawić st = „j”, „i”, „h”, „g”, „f”;
ustawić:: iterator ITB = ST.zaczynać(); set :: iterator Ite = st.koniec();
ITB ++; Ite--;
dla (set:: iterator it = itb; To != Ite; it ++)
Cout << *it << ", ";
Cout << endl;
powrót 0;

Wyjście to:

G, H, I,

Pamiętaj, że wartości w zestawie zostały zmienione w kolejności rosnącej w oparciu o ustawienia domyślne po wprowadzeniu. Iterator ITB punktów tuż przed pierwszym elementem ponownie uporządkowanego. Iterator ITE wskazuje tuż poza ostatnim elementem ponownie zamówionego zestawu. „ITB ++” następnie wskazuje na drugi element, podczas gdy „Ite-” następnie wskazuje na ostatni element dla zakresu. Ten ostatni element nie zostanie uwzględniony w zakresie.

For pętka drukuje zasięg, [„g”, „h”, „i” [wykluczając „j” tak, jak powinno.

W przypadku przekształcenia całego zestawu w wektor, należy użyć całego zakresu zestawu. Tak więc ITB lub ITE nie powinny być nie zwiększane, ani zmniejszane.

Konstruktor wektora zasięgu

Konstruktor wektorowy, który zajmuje zasięg jako argumenty, to:

szablon
constexpr wektor (pierwszy inputiterator, inputiterator Last, const alokator & = alokator ());

Jeśli trzeci argument nie jest podany, wartość domyślna jest wybierana przez C++. Porównując tę ​​składnię z powyższym kodem, po pierwsze byłoby to ITB, a ostatnie byłoby ITE.

Ten konstruktor można zatem użyć do przekształcania zestawu w wektor. Poniższy program ilustruje to:

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

ustawić st = „j”, „i”, „h”, „g”, „f”;
ustawić:: iterator ITB = ST.zaczynać(); set :: iterator Ite = st.koniec();
wektor VTR (ITB, ITE);
dla (int i = 0; iCout << vtr[i] << ", ";
Cout << endl;
powrót 0;

Wyjście to:

F, g, h, i, j,

posortowany. Argument alokatora został pominięty w kodzie. Do uzyskania wartości wektora, które były posortowanymi wartościami z zestawu z zestawu.

Był to jeden ze sposobów przekształcenia lub zmiany zestawu w wektor. Pozostałe dwa sposoby są wyjaśnione następne:

Wektor przypisz funkcję członka

Jedną z składni dla funkcji członka wektorów () jest:

szablon
constexpr void przypisanie (pierwszy inputiterator, inputiterator last)

Zakres wymaga argumentów, pierwszy i ostatni dla tego samego ustawionego iteratora. W tej sytuacji pusty wektor musi zostać najpierw skonstruowany. Następnie metoda przypisania doda wszystkie elementy zestawu do wektora. Zestaw treści pozostaje niezmieniona, ale nadal posortowana. Poniższy program ilustruje użycie funkcji przypisania członka:

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

ustawić st = „j”, „i”, „h”, „g”, „f”;
ustawić:: iterator ITB = ST.zaczynać(); ustawić:: iterator Ite = st.koniec();
wektor vtr;
vtr.przypisanie (ITB, ITE);
dla (set:: iterator it = itb; To != Ite; it ++) cout << *it << ", "; cout << endl;
dla (int i = 0; ipowrót 0;

Wyjście to:

F, g, h, i, j,
F, g, h, i, j,

Pierwszym za pętla jest wyświetlanie ustawionej zawartości, która pozostała niezmieniona. Drugim jest wyświetlenie wektora, którego treść na początku jest treść sortowanego zestawu.

To była druga metoda konwersji lub zmiany zestawu na wektor. Następuje wyjaśnienie trzeciej metody tego artykułu:

Funkcja kopii () w bibliotece algorytmu

Składnia jednej z funkcji kopii w bibliotece algorytmu jest:

szablon
Constexpr Outputiterator Copy (INTUTUTITERator First, Inputiterator Last, wynik wyjściowy)

W przypadku wektora iterator powrotny jest jednocześnie iteratorem wejściowym, jak i iteratorem wyjściowym. Jeśli P jest iteratorem wejściowym, *P zwróci wartość wskazaną przez p. Jeśli P jest iteratorem wyjściowym, *P może odbierać wartość dla lokalizacji pamięci wskazanej przez p.

Pierwsze i drugie argumenty tutaj, są takie same jak w przypadku poprzedniej funkcji. Wynikiem argumentu jest wyjście, który wskazuje na pierwszy element wektora.

Outputiterator powrotu tutaj, punkty tuż po ostatnim elemencie wektora. Oznacza to, że wektor musi być utworzony o rozmiarze, który jest co najmniej równy rozmiarowi zestawu.

Z tą funkcją kopii () biblioteka algorytmu musi zostać uwzględniona w programie, ponieważ funkcja znajduje się w bibliotece algorytmu. Poniższy kod w funkcji C ++ main () pokazuje, jak używać funkcji kopiowania:

ustawić st = „j”, „i”, „h”, „g”, „f”;
ustawić:: iterator ITB = ST.zaczynać(); set :: iterator Ite = st.koniec();
wektor VTR (10);
wektor:: iterator outit = copy (ITB, ITE, VTR.zaczynać());
vtr.Zmień rozmiar (outit - vtr.zaczynać());
dla (set:: iterator it = itb; To != Ite; it ++) cout << *it << ", "; cout << endl;
dla (int i = 0; ipowrót 0;

Wyjście to:

F, g, h, i, j,
F, g, h, i, j,

Zwrócone wyjściowe jest wektora. Wektor musiał zostać zmieniony na liczbę elementów w zestawie. Treść zestawu nie zmieniła się.

Wniosek

Zestaw można zmienić na wektor za pomocą konstruktora wektorarea lub funkcji członka wektorowego () lub funkcji biblioteki algorytmu kopii (). Istnieją inne mniej łatwe do kodowania metody - patrz później.