30 przykładów wektorów C++

30 Przykladow Wektorow C



W C++ Vector jest jednowymiarową strukturą danych, która dynamicznie zwiększa się w zależności od wymagań. W tej strukturze danych można efektywnie organizować dane (wstawianie/modyfikacja/usuwanie). Jego zastosowania obejmują:

  1. Reprezentowanie wektorów matematycznych w zastosowaniach naukowych i inżynieryjnych
  2. Za pomocą tej struktury danych można implementować kolejki, stosy itp.

Większość typowych operacji i funkcji CRUD związanych z tą strukturą danych została szczegółowo omówiona w oparciu o scenariusze za pomocą fragmentów składni i kodu.







Temat treści:

  1. Wstaw element do wektora
  2. Wstaw wiele elementów do wektora
  3. Uzyskaj dostęp do elementów z wektora
  4. Zaktualizuj element w wektorze
  5. Usuń określony element z wektora
  6. Usuń wszystkie elementy z wektora
  7. Związek wektorów
  8. Przecięcie wektorów
  9. Sprawdź, czy wektor jest pusty, czy nie
  10. Przemierzaj wektor za pomocą Const_Iterator
  11. Przemierzaj wektor za pomocą Reverse_Iterator
  12. Wciśnij elementy do wektora
  13. Pop elementy z wektora
  14. Zamień wektory
  15. Pobierz pierwszy element z wektora
  16. Pobierz ostatni element z wektora
  17. Przypisz nowe wartości do wektora
  18. Rozszerz wektor za pomocą Emplace()
  19. Rozszerz wektor za pomocą Emplace_Back()
  20. Maksymalny element wektora
  21. Minimalny element wektora
  22. Suma elementów w wektorze
  23. Mnożenie elementarne dwóch wektorów
  24. Iloczyn skalarny dwóch wektorów
  25. Konwertuj zbiór na wektor
  26. Usuń zduplikowane elementy
  27. Konwertuj wektor na zbiór
  28. Usuń puste ciągi
  29. Zapisz wektor do pliku tekstowego
  30. Utwórz wektor z pliku tekstowego

Wstaw element do wektora

The std::vector::insert() funkcja w C++ STL służy do wstawiania elementów w określonej pozycji.



Składnia:

wektor. wstawić ( pozycja, element ) ;

Skorzystajmy z tej funkcji i przekażmy pierwszą pozycję jako parametr określający pozycję, w której element ma zostać wstawiony, i podaj element jako drugi parametr.



Można tu zastosować funkcję Begin() w celu zwrócenia iteratora wskazującego pierwszy element wektora wejściowego. Dodanie pozycji do tej funkcji powoduje wstawienie elementu w tej pozycji.





Utwórzmy wektor „student_names” typu string i wstawmy dwa ciągi znaków na pierwszej i drugiej pozycji, jeden po drugim, za pomocą funkcji wstaw().

#include

za pomocą przestrzeń nazw st ;

główny ( )

{

// Inicjowanie wektora - imiona_studentów

wektor < strunowy > imiona_uczniów ;

cout << „Istniejący wektor: \N ' ;

Do ( automatyczny I : imiona_uczniów ) cout << I << koniec ;

// Wstaw „Sravan Kumar” na pierwszej pozycji

imiona_uczniów. wstawić ( imiona_uczniów. zaczynać ( ) + 0 , „Shravan Kumar” ) ;

// Wstaw „Sravan Kumar” na drugiej pozycji

imiona_uczniów. wstawić ( imiona_uczniów. zaczynać ( ) + 1 , „Lalita” ) ;

cout << „Ostateczny wektor: \N ' ;

Do ( automatyczny J : imiona_uczniów ) cout << J << koniec ;

}

Wyjście:

Poprzednio wektor „nazwy_studentów” był pusty. Po wstawieniu wektor zawiera dwa elementy.



Wstaw wiele elementów do wektora

W tym scenariuszu używamy tej samej funkcji, która jest std::vector::insert(). Musimy jednak przekazać dodatkowe/różne parametry tej samej funkcji, aby wstawić wiele elementów do wektora.

Scenariusz 1: Wielokrotne wstawianie pojedynczego elementu

W tym scenariuszu dodajemy ten sam element wielokrotnie.

Składnia:

wektor. wstawić ( pozycja, rozmiar, element ) ;

Aby to zrobić, musimy przekazać rozmiar jako drugi parametr do funkcji wstaw(). Łączna liczba parametrów przekazywanych do tej funkcji wynosi trzy.

Tutaj:

  1. Parametr position określa położenie elementu, który ma zostać wstawiony. Jeśli rozmiar jest większy niż 1, indeksem pozycji początkowej będzie pozycja.
  2. Parametr size określa, ile razy element ma zostać wstawiony.
  3. Parametr element przyjmuje element, który ma zostać wstawiony do wektora.

Rozważmy wektor „nazwiska_studentów” z dwoma ciągami znaków. Włóż struny „Lavanya” pięć razy na drugą pozycję.

#include

za pomocą przestrzeń nazw st ;

główny ( )

{

// Inicjowanie wektora - imiona_studentów

wektor < strunowy > imiona_uczniów { „Shravan Kumar” , „Lalita” } ;

cout << „Istniejący wektor: \N ' ;

Do ( automatyczny I : imiona_uczniów ) cout << I << koniec ;

// Wstaw „Lavanya” na drugiej pozycji 5 razy

imiona_uczniów. wstawić ( imiona_uczniów. zaczynać ( ) + 1 , 5 , „Lawana” ) ;

cout << ' \N Ostateczny wektor: \N ' ;

Do ( automatyczny J : imiona_uczniów ) cout << J << koniec ;

}

Wyjście:

W istniejącym wektorze „Sravan Kumar” znajduje się na pierwszej pozycji, a „Lalitha” na drugiej pozycji. Po pięciokrotnym wstawieniu „Lavanyi” (z pozycji drugiej na szóstą) „Lalitha” przesunęła się na pozycję siódmą (ostatnią).

Scenariusz 2: Wstawianie wielu elementów

W tym scenariuszu dodajemy jednocześnie różne elementy z innego wektora. Tutaj również używamy tej samej funkcji, ale składnia i parametry ulegną zmianie.

Składnia:

wektor. wstawić ( pozycja, pierwszy_iterator, drugi_iterator ) ;

Aby to zrobić, musimy przekazać rozmiar jako drugi parametr do funkcji wstaw(). Łączna liczba parametrów przekazywanych do tej funkcji wynosi trzy.

Tutaj:

  1. Parametr position określa położenie elementu, który ma zostać wstawiony.
  2. „first_iterator” określa pozycję początkową, od której mają zostać wstawione elementy (w zasadzie za pomocą funkcji Begin() zwracany jest iterator wskazujący pierwszy element znajdujący się w kontenerze).
  3. Parametr „drugi_iterator” określa końcową pozycję, do której elementy mają zostać wstawione (w zasadzie za pomocą funkcji end() zwracany jest iterator wskazujący obok ostatniego punktu znajdującego się w kontenerze).

Utwórz dwa wektory „marks1” i „marks2” typu całkowitego. Wstaw wszystkie elementy występujące w wektorze „marks2” na pierwszą pozycję wektora „marks1”.

#include

za pomocą przestrzeń nazw st ;

główny ( )

{

// Inicjowanie wektora - marks1

wektor < wew > znaki1 { 100 , 89 , 90 , 78 , 98 } ;

cout << „Pierwszy wektor: \N ' ;

Do ( automatyczny I : znaki1 ) cout << I << koniec ;

// Inicjowanie wektora - marks2

wektor < wew > znaki2 { 56 , Cztery pięć , 65 } ;

cout << „Drugi wektor: \N ' ;

Do ( automatyczny J : znaki2 ) cout << J << koniec ;

znaki1. wstawić ( zaczynać ( znaki1 ) , zaczynać ( znaki2 ) , koniec ( znaki2 ) ) ;



// Ostateczny wektor

cout << „Wektor pierwszego-finału: \N ' ;

Do ( automatyczny X : znaki1 )

cout << X << ' ' ;

}

Wyjście:

Pierwszy wektor (marks1) zawiera pięć elementów, a drugi wektor (marks2) zawiera trzy elementy. Przekazaliśmy parametry Begin (marks1), Begin(marks2), end(marks2) do funkcji „insert” w taki sposób, że wszystkie elementy obecne w drugim wektorze są iterowane i wstawiane na początku do pierwszego wektora. Zatem pierwszy wektor zawiera osiem elementów.

Uzyskaj dostęp do elementów z wektora

1. Korzystanie z operatora []

W niektórych scenariuszach może być wymagane zwrócenie tylko określonych elementów z wektora. Zwracanie wszystkich elementów nie jest potrzebne. Aby więc zwrócić tylko określone elementy oparte na indeksie, używany jest operator indeksu i funkcje at().

Składnia:

wektor [ pozycja_indeksu ]

W C++ indeksowanie zaczyna się od 0 dla dowolnej struktury danych. Jeśli element nie istnieje, zwraca wartość pustą (nie pojawia się żaden błąd ani ostrzeżenie).

Rozważmy wektor „produktów” z pięcioma elementami. Uzyskaj dostęp do wszystkich elementów jeden po drugim, korzystając z pozycji indeksu.

#include

za pomocą przestrzeń nazw st ;

główny ( )

{

// Utwórz wektor - produkty z 5 ciągami

wektor < strunowy > produkty { 'mydło' , 'szampon' , 'olej' , 'owoce' , 'warzywa' } ;

//Dostęp do elementów produktów

cout << „Pierwszy element:” << produkty [ 0 ] << koniec ;

cout << „Drugi element:” << produkty [ 1 ] << koniec ;

cout << „Trzeci element:” << produkty [ 2 ] << koniec ;

cout << „Czwarty element:” << produkty [ 3 ] << koniec ;

cout << „Piąty element:” << produkty [ 4 ] << koniec ;



// Spróbuj uzyskać dostęp do dziewiątego elementu

cout << „Dziewiąty element:” << produkty [ 8 ] << koniec ;

}

Wyjście:

W indeksie 8 nie ma żadnego elementu. Zwracana jest zatem wartość pusta.

2. Korzystanie z funkcji At().

At() jest funkcją członkowską, która jest podobna do poprzedniego przypadku użycia, ale zwraca wyjątek „std::out_of_range”, gdy podano jej indeks spoza zakresu.

Składnia:

wektor. Na ( pozycja_indeksu )

Musimy przekazać pozycję indeksu do tej funkcji.

Rozważmy wektor „produktów” z pięcioma elementami. Uzyskaj dostęp do wszystkich elementów jeden po drugim, korzystając z pozycji indeksu i spróbuj uzyskać dostęp do elementu znajdującego się na 9. pozycji.

#include

za pomocą przestrzeń nazw st ;

główny ( )

{

// Utwórz wektor - produkty z 5 ciągami

wektor < strunowy > produkty { 'mydło' , 'szampon' , 'olej' , 'owoce' , 'warzywa' } ;

//Dostęp do elementów produktów

cout << „Pierwszy element:” << produkty. Na ( 0 ) << koniec ;

cout << „Drugi element:” << produkty. Na ( 1 ) << koniec ;

cout << „Trzeci element:” << produkty. Na ( 2 ) << koniec ;

cout << „Czwarty element:” << produkty. Na ( 3 ) << koniec ;

cout << „Piąty element:” << produkty. Na ( 4 ) << koniec ;



//Dostęp do elementów, których nie ma w wektorze

cout << „Dziewiąty element:” << produkty. Na ( 8 ) << koniec ;

}

Wyjście:

Występuje błąd podczas dostępu do 9. elementu:

zakończyć wywoływane po rzuceniu instancji „std::out_of_range”

Co ( ) : wektor :: _M_zakres_check : __N ( który jest 8 ) >= Ten - > rozmiar ( ) ( który jest 5 )

Zaktualizuj element w wektorze

1. Korzystanie z operatora []

Korzystając z pozycji indeksu, możemy zaktualizować element w wektorze. Operator [] przyjmuje pozycję indeksu elementu, który ma zostać zaktualizowany. Nowy element zostanie przypisany do tego operatora.

Składnia:

Wektor [ pozycja_indeksu ] = Element

Rozważ wektor „student_marks” z pięcioma wartościami. Zaktualizuj elementy obecne w indeksach 1 i 3.

#include

#uwzględnij

za pomocą przestrzeń nazw st ;

główny ( )

{

// Utwórz wektor - student_marks

wektor < wew > oceny_uczniów { 98 , 78 , 90 , 67 , 89 } ;

cout << „Istniejące znaki:” << koniec ;

Do ( wew itr : oceny_uczniów )

cout << itr << koniec ;

// Zaktualizuj element o indeksie-3 wartością 100

oceny_uczniów [ 3 ] = 100 ;

// Zaktualizuj element o indeksie-1 wartością 60

oceny_uczniów [ 1 ] = 60 ;

cout << „Oceny końcowe:” << koniec ;

Do ( wew itr : oceny_uczniów )

cout << itr << koniec ;

}

Wyjście:

Widzimy, że końcowy wektor przechowuje elementy aktualizacji w indeksach 1 i 3.

2. Korzystanie z funkcji At().

Podobnie jak operator indeksu, at() jest w zasadzie funkcją członkowską, która aktualizuje wartość na podstawie indeksu w iteratorze. Jeśli indeks określony w tej funkcji nie istnieje, zgłaszany jest wyjątek „std::out_of_range”.

wektor. Na ( pozycja_indeksu ) = Element

Rozważmy wektor „produktów” z pięcioma elementami. Zaktualizuj wszystkie elementy obecne w wektorze innymi elementami.

#include

za pomocą przestrzeń nazw st ;

główny ( )

{

// Utwórz wektor - produkty z 5 ciągami

wektor < strunowy > produkty { 'mydło' , 'szampon' , 'olej' , 'owoce' , 'warzywa' } ;

cout << 'Istniejące produkty: ' << koniec ;

Do ( ciąg to : produkty )

cout << itr << koniec ;

//Aktualizacja wszystkich ciągów

produkty. Na ( 0 ) = 'Ciasto' ;

produkty. Na ( 1 ) = 'Czekolada' ;

produkty. Na ( 2 ) = 'Owoce' ;

produkty. Na ( 3 ) = 'Cebule' ;

produkty. Na ( 4 ) = 'Napoje bezalkoholowe' ;



cout << ' \N Produkty końcowe: „ << koniec ;

Do ( ciąg to : produkty )

cout << itr << koniec ;

}

Wyjście:

Usuń określony element z wektora

W C++, std::vector::erase() funkcja służy do usunięcia określonego elementu/zakresu elementów z wektora. Elementy są usuwane na podstawie pozycji iteratora.

Składnia:

wektor. usuwać ( pozycja iteratora )

Zobaczmy składnię usuwania określonego elementu z wektora. Możemy użyć funkcji Begin() lub end(), aby uzyskać pozycję elementu obecnego w wektorze, który ma zostać usunięty.

Rozważmy wektor „produktów” z pięcioma elementami.

  1. Usuń trzeci element, określając iterator Begin(). Begin() wskazuje pierwszy element wektora. Jeśli dodamy do tej funkcji dwa, wskaże ona trzeci element.
  2. Usuń ostatni element, określając iterator end(). End() wskazuje ostatni element wektora.
#include

za pomocą przestrzeń nazw st ;

główny ( )

{

// Utwórz wektor - produkty z 5 ciągami

wektor < strunowy > produkty { 'mydło' , 'szampon' , 'olej' , 'owoce' , 'warzywa' } ;

cout << 'Istniejące produkty: ' << koniec ;

Do ( ciąg to : produkty )

cout << itr << koniec ;



// Usuń trzeci element

produkty. usuwać ( produkty. zaczynać ( ) + 2 ) ;

cout << ' \N Po usunięciu trzeciego elementu: \N ' ;

Do ( ciąg to : produkty )

cout << itr << koniec ;

// Usuń ostatni element

produkty. usuwać ( produkty. koniec ( ) ) ;

cout << ' \N Po usunięciu ostatniego elementu: \N ' ;

Do ( ciąg to : produkty )

cout << itr << koniec ;

}

Wyjście:

Teraz w wektorze „produkty” istnieją tylko trzy elementy („mydło”, „szampon”, „owoce”).

Usuń wszystkie elementy z wektora

Scenariusz 1: Usuń zakres elementów z wektora

Użyjmy funkcji std::vector::erase(), aby usunąć wiele elementów z zakresu.

Składnia:

wektor. usuwać ( iterator pierwszy, iterator ostatni )

Do określenia zakresu służą dwa iteratory (begin() wskazuje na pierwszy element i end() wskazuje na ostatni element).

Rozważ wektor „produktów” z pięcioma elementami i usuń wszystkie elementy z drugiej pozycji. Aby to osiągnąć, pierwszym iteratorem jest początek (produkty)+1, który wskazuje na drugi element, a drugim iteratorem jest koniec (produkty).

#include

za pomocą przestrzeń nazw st ;

główny ( )

{

// Utwórz wektor - produkty z 5 ciągami

wektor < strunowy > produkty { 'mydło' , 'szampon' , 'olej' , 'owoce' , 'warzywa' } ;

cout << 'Istniejące produkty: ' << koniec ;

Do ( ciąg to : produkty )

cout << itr << koniec ;



// Usuń wszystkie elementy z drugiej pozycji

produkty. usuwać ( zaczynać ( produkty ) + 1 ,koniec ( produkty ) ) ;

cout << ' \N Produkty końcowe: \N ' ;

Do ( ciąg to : produkty )

cout << itr << koniec ;

}

Wyjście:

Teraz w wektorze „produkty” występuje tylko jeden element („mydło”).

Scenariusz 2: Usuń wszystkie elementy z wektora

Skorzystajmy z std::vector::clear() funkcja usuwająca wszystkie elementy z wektora.

Składnia:

wektor. jasne ( )

Do tej funkcji nie są przekazywane żadne parametry.

Rozważmy ten sam wektor, który został wykorzystany w pierwszym scenariuszu i usuń wszystkie elementy za pomocą funkcji clear().

#include

za pomocą przestrzeń nazw st ;

główny ( )

{

// Utwórz wektor - produkty z 5 ciągami

wektor < strunowy > produkty { 'mydło' , 'szampon' , 'olej' , 'owoce' , 'warzywa' } ;

cout << 'Istniejące produkty: ' << koniec ;

Do ( ciąg to : produkty )

cout << itr << koniec ;



// Usuń wszystkie elementy z produktów

produkty. jasne ( ) ;

cout << ' \N Produkty końcowe: \N ' ;

Do ( ciąg to : produkty )

cout << itr << koniec ;

}

Wyjście:

Widzimy, że w wektorze „produkty” nie ma żadnych elementów.

Związek wektorów

Możliwe jest wykonanie operacji UNION na wektorach za pomocą funkcji std::set_union(). Union zwraca unikalne elementy z wektorów, ignorując zduplikowane elementy. Musimy przekazać oba iteratory do tej funkcji. Oprócz tego należy przekazać iterator wyjściowy, który przechowuje wynik zwracany przez oba iteratory.

Składnia:

set_union ( Najpierw InputIterator1, Najpierw Iterator1, Ostatni 1, Najpierw Iterator2 2, Najpierw Iterator2, Ostatni 2, OutputIterator res ) ;

Tutaj:

  1. „first1” wskazuje na pierwszy element pierwszego iteratora (wektor).
  2. „Last1” wskazuje na ostatni element pierwszego iteratora (wektor).
  3. „first2” wskazuje na pierwszy element drugiego iteratora (wektor).
  4. „Last2” wskazuje na ostatni element drugiego iteratora (wektor).

Utwórz dwa wektory – „przedmioty1” i „podmioty2” – typu integer.

  1. Posortuj dwa wektory za pomocą funkcji sort(), przekazując iteratory.
  2. Utwórz wektor wyjściowy (iterator).
  3. Znajdź sumę tych dwóch wektorów za pomocą funkcji std::set_union(). Użyj metody Begin() jako pierwszego iteratora i end() jako ostatniego iteratora.
  4. Wykonaj iterację wektora wyjściowego, aby wyświetlić elementy zwracane przez funkcję.
#include

#include

#uwzględnij

za pomocą przestrzeń nazw st ;

główny ( )

{

// Utwórz wektor - marks1

wektor < wew > znaki1 = { 100 , 90 , 80 , 70 , 60 } ;



// Utwórz wektor - marks2

wektor < wew > znaki2 = { 80 , 90 , 60 , 70 , 100 } ;

// Sortuj oba wektory

sortować ( znaki1. zaczynać ( ) , znaki1. koniec ( ) ) ;

sortować ( znaki2. zaczynać ( ) , znaki2. koniec ( ) ) ;

wektor < wew > wektor wyjściowy ( znaki1. rozmiar ( ) + znaki2. rozmiar ( ) ) ;

wektor < wew > :: iterator Jest ;

I = set_union ( znaki1. zaczynać ( ) , znaki1. koniec ( ) ,

znaki2. zaczynać ( ) ,znaki2. koniec ( ) ,

wektor wyjściowy. zaczynać ( ) ) ;

cout << ' \N znaki1 U znaki2: \N ' ;

Do ( S = wektor wyjściowy. zaczynać ( ) ; S ! = I ; ++ S )

cout << * S << ' ' << ' \N ' ;

}

Wyjście:

W obu wektorach (przedmioty 1 i podmioty 2) znajduje się tylko pięć unikalnych elementów.

Przecięcie wektorów

Znalezienie przecięcia dwóch wektorów jest możliwe przy pomocy funkcji std::set_intersection(). Przecięcie zwraca elementy obecne w obu wektorach.

Składnia:

set_intersection ( Najpierw InputIterator1, Najpierw Iterator1, Ostatni 1, Najpierw Iterator2 2, Najpierw Iterator2, Ostatni 2, OutputIterator res ) ;

Parametry przekazywane do funkcji set_union() można również przekazać do tej funkcji set_intersection().

Utwórz dwa wektory – „przedmioty1” i „podmioty2” – typu integer.

  1. Posortuj dwa wektory za pomocą funkcji sort(), przekazując iteratory.
  2. Utwórz wektor wyjściowy (iterator).
  3. Znajdź przecięcie tych dwóch wektorów za pomocą funkcji std::set_intersection(). Użyj metody Begin() jako pierwszego iteratora i end() jako ostatniego iteratora.
  4. Wykonaj iterację wektora wyjściowego, aby wyświetlić elementy zwracane przez funkcję.
#include

#include

#uwzględnij

za pomocą przestrzeń nazw st ;

główny ( )

{

// Utwórz wektor - marks1

wektor < wew > znaki1 = { 100 , 10 , 80 , 40 , 60 } ;



// Utwórz wektor - marks2

wektor < wew > znaki2 = { pięćdziesiąt , 90 , 60 , 10 , 100 } ;

// Sortuj oba wektory

sortować ( znaki1. zaczynać ( ) , znaki1. koniec ( ) ) ;

sortować ( znaki2. zaczynać ( ) , znaki2. koniec ( ) ) ;

wektor < wew > wektor wyjściowy ( znaki1. rozmiar ( ) + znaki2. rozmiar ( ) ) ;

wektor < wew > :: iterator Jest ;

I = set_intersection ( znaki1. zaczynać ( ) , znaki1. koniec ( ) ,

znaki2. zaczynać ( ) ,znaki2. koniec ( ) ,

wektor wyjściowy. zaczynać ( ) ) ;

cout << ' \N znaki1 ∩ znaki2: \N ' ;

Do ( S = wektor wyjściowy. zaczynać ( ) ; S ! = I ; ++ S )

cout << * S << ' ' << ' \N ' ;

}

Wyjście:

W obu wektorach (przedmioty 1 i podmioty 2) występują tylko trzy elementy.

Sprawdź, czy wektor jest pusty, czy nie

Przed pracą z wektorami ważne jest sprawdzenie, czy wektor jest pusty, czy nie. Dobrą praktyką w projektach oprogramowania jest również sprawdzanie, czy wektor jest pusty, czy nie, przed wykonaniem operacji, takich jak operacje CRUD itp.

1. Korzystanie z metody Std::vector::empty()

Ta funkcja zwraca 1, jeśli wektor jest pusty (nie zawiera żadnego elementu). W przeciwnym razie zwracane jest 0. Do tej funkcji nie jest przekazywany żaden parametr.

2. Korzystanie z Std::vector::size()

Funkcja std::vector::size() zwraca liczbę całkowitą reprezentującą całkowitą liczbę elementów obecnych w wektorze.

Utwórz dwa wektory – „college1” i „college2”. „College1” zawiera pięć elementów, a „college2” jest puste. Zastosuj obie funkcje do obu wektorów i sprawdź wynik.

#include

#include

#uwzględnij

za pomocą przestrzeń nazw st ;

główny ( )

{

// Utwórz wektor - college1

wektor < strunowy > uczelnia 1 = { „Kolegium-A” , „Kolegium B” , „college-C” , „kolegium-D” , „kolegium-E” } ;

// Utwórz wektor - college2

wektor < strunowy > studia2 ;

// pusty()

cout << uczelnia 1. pusty ( ) << koniec ;

cout << studia2. pusty ( ) << koniec ;

// rozmiar()

cout << uczelnia 1. rozmiar ( ) << koniec ;

cout << studia2. rozmiar ( ) << koniec ;

}

Wyjście:

Funkcja pusty() zwraca 0 dla „college1” i 1 dla „college2”. Funkcja size() zwraca pięć dla „college1” i 0 dla „college2”.

Przemierzaj wektor za pomocą Const_Iterator

Kiedy pracujesz na kontenerach C++, takich jak zestawy, wektory itp., możesz iterować po wszystkich elementach znajdujących się w kontenerze bez ich modyfikowania. The const_iterator jest jednym z iteratorów, które osiągają ten scenariusz. cbegin() (wskazuje pierwszy element wektora) i cend() (wskazuje ostatni element wektora) to dwie funkcje udostępniane przez każdy kontener, które służą do zwracania stałego iteratora na początek i koniec pojemnik. Iterując wektor, możemy wykorzystać te dwie funkcje.

  1. Stwórzmy wektor o nazwie „działy” z pięcioma ciągami znaków.
  2. Zadeklaruj const_iterator – ctr typu .
  3. Iteruj po działach, korzystając z poprzedniego iteratora, używając pętli „for” i wyświetl go.
#include

#uwzględnij

za pomocą przestrzeń nazw st ;

główny ( )

{

// Utwórz wektor - działy

wektor < strunowy > działy = { 'Obroty' , 'Praca' ,

„HR” , 'TO' , 'Inni' } ;



wektor < strunowy > :: const_iterator kontrolka ;

// Iteruj po działach za pomocą const_iterator - ctr.

Do ( kontrolka = działy. czacznij ( ) ; kontrolka ! = działy. kilka ( ) ; kontrolka ++ ) {

cout << * kontrolka << koniec ;

}

}

Wyjście:

Przemierzaj wektor za pomocą Reverse_Iterator

The odwrotny_iterator jest także iteratorem podobnym do const_iterator, ale zwraca elementy w odwrotnej kolejności. rbegin() (wskazuje ostatni element wektora) i rend() (wskazuje pierwszy element wektora) to dwie funkcje udostępniane przez każdy kontener, które służą do zwracania stałego iteratora na koniec i początek pojemnik.

  1. Stwórzmy wektor o nazwie „działy” z pięcioma ciągami znaków.
  2. Zadeklaruj Reverse_iterator – rtr typu .
  3. Iteruj po działach, korzystając z poprzedniego iteratora, używając pętli „for” i wyświetl go.
#include

#uwzględnij

za pomocą przestrzeń nazw st ;

główny ( )

{

// Utwórz wektor - działy

wektor < strunowy > działy = { 'Obroty' , 'Praca' ,

„HR” , 'TO' , 'Inni' } ;



wektor < strunowy > :: odwrotny_iterator rtr ;

// Iteruj po działach za pomocą Reverse_iterator - rtr.

Do ( rtr = działy. zacznij ( ) ; rtr ! = działy. sprawia ( ) ; rtr ++ ) {

cout << * rtr << koniec ;

}

}

Wyjście:

Wciśnij elementy do wektora

Wpychanie lub dołączanie elementów do wektora to jednokierunkowe wstawianie, które można wykonać za pomocą wektor::push_back() funkcjonować.

Składnia:

wektor. push_back ( element )

Jako parametr potrzebny jest element, który ma zostać wepchnięty do wektora.

Stwórzmy pusty wektor o nazwie „departments” z pięcioma ciągami znaków i wypchnijmy dwa ciągi jeden po drugim za pomocą funkcji push_back().

#include

#uwzględnij

za pomocą przestrzeń nazw st ;

główny ( )

{

// Zainicjuj wektor - działy

wektor < strunowy > działy ;

cout << „Rzeczywiste wydziały:” << koniec ;

Do ( automatyczny itr = działy. zaczynać ( ) ; itr ! = działy. koniec ( ) ; ++ itr )

cout << * itr << koniec ;

// Naciśnij „Sprzedaż”

działy. push_back ( 'Obroty' ) ;

// Popchnij'

działy. push_back ( 'TO' ) ;

cout << ' \N Działy końcowe:” << koniec ;

Do ( automatyczny itr = działy. zaczynać ( ) ; itr ! = działy. koniec ( ) ; ++ itr )

cout << * itr << koniec ;

}

Wyjście:

Najpierw naciskamy przycisk „Sprzedaż”. Następnie „IT” jest wpychany do wektora. Teraz wektor „działy” zawiera dwa elementy.

Pop elementy z wektora

Jeśli chcesz usunąć ostatni element obecny w wektorze, korzystając z wektor::pop_back() funkcja jest najlepszym podejściem. Usuwa ostatni element obecny w wektorze.

Składnia:

wektor. pop_back ( )

Dla tej funkcji nie jest potrzebny żaden parametr. Pokazuje niezdefiniowane zachowanie, jeśli spróbujemy usunąć ostatni element z pustego wektora.

Stwórzmy pusty wektor o nazwie „departments” z pięcioma ciągami znaków i usuńmy ostatni element, korzystając z poprzedniej funkcji. Wyświetl wektor w obu przypadkach.

#include

#uwzględnij

za pomocą przestrzeń nazw st ;

główny ( )

{

// Zainicjuj wektor - działy

wektor < strunowy > działy = { 'Obroty' , 'TO' , 'Praca' , „Marketing” , „HR” } ;

cout << „Rzeczywiste wydziały:” << koniec ;

Do ( automatyczny itr = działy. zaczynać ( ) ; itr ! = działy. koniec ( ) ; ++ itr )

cout << * itr << koniec ;



// Usuń ostatni element

działy. pop_back ( ) ;

cout << ' \N Działy końcowe:” << koniec ;

Do ( automatyczny itr = działy. zaczynać ( ) ; itr ! = działy. koniec ( ) ; ++ itr )

cout << * itr << koniec ;

}

Wyjście:

„HR” to ostatni element występujący w wektorze „działy”. Zatem jest on usuwany z wektora, a końcowy wektor zawiera „Sprzedaż”, „IT”, „Usługa” i „Marketing”.

Zamień wektory

The wektor::zamień() Funkcja w C++ STL służy do zamiany wszystkich elementów występujących w dwóch wektorach.

Składnia:

pierwszy_wektor. zamieniać ( drugi_wektor )

Nie uwzględnia rozmiaru wektorów, ale wektory powinny być tego samego typu (w przypadku różnych typów wektorów zgłaszany jest błąd).

Stwórzmy dwa wektory – „owoce” i „warzywa” – typu string o różnych rozmiarach. Zamień każdy z nich i wyświetl wektory w obu przypadkach.

#include

#uwzględnij

za pomocą przestrzeń nazw st ;

główny ( )

{

// Inicjalizacja wektora - owoce

wektor < strunowy > owoce = { 'Jabłko' , 'Mango' } ;

cout << „Rzeczywiste owoce:” << koniec ;

Do ( automatyczny itr = owoce. zaczynać ( ) ; itr ! = owoce. koniec ( ) ; ++ itr )

cout << * itr << koniec ;



// Inicjalizacja wektora - warzywa

wektor < strunowy > warzywa = { 'Ziemniak' , 'Pomidor' , „Brinjal” } ;

cout << ' \N Rzeczywiste warzywa:” << koniec ;

Do ( automatyczny itr = warzywa. zaczynać ( ) ; itr ! = warzywa. koniec ( ) ; ++ itr )

cout << * itr << koniec ;



// Zamień elementy w obu wektorach

owoce. zamieniać ( warzywa ) ;

cout << ' \N Owoce po zamianie:' << koniec ;

Do ( automatyczny itr = owoce. zaczynać ( ) ; itr ! = owoce. koniec ( ) ; ++ itr )

cout << * itr << koniec ;

cout << ' \N Warzywa po zamianie:' << koniec ;

Do ( automatyczny itr = warzywa. zaczynać ( ) ; itr ! = warzywa. koniec ( ) ; ++ itr )

cout << * itr << koniec ;

}

Wyjście:

Poprzednio wektor „owoce” zawierał dwa elementy, a wektor „warzywa” trzy elementy. Po zamianie wektor „owoce” zawiera trzy elementy, a wektor „warzywa” zawiera dwa elementy.

Pobierz pierwszy element z wektora

W niektórych przypadkach wymagane jest zwrócenie tylko pierwszego elementu wektora. Funkcja Vector::front() w C++ STL pobiera tylko pierwszy element z wektora.

Składnia:

wektor. przód ( )

Ta funkcja nie przyjmuje żadnego parametru. Jeśli wektor jest pusty, zgłaszany jest błąd.

Stwórzmy dwa wektory – „owoce” i „warzywa” – typu string i spróbujmy pobrać pierwszy element oddzielnie od dwóch wektorów.

#include

#uwzględnij

za pomocą przestrzeń nazw st ;

główny ( )

{

// Utwórz wektor - owoce z 2 elementami

wektor < strunowy > owoce = { 'Jabłko' , 'Mango' } ;

// Zwraca pierwszy element

cout << owoce. przód ( ) << koniec ;



// Inicjalizacja wektora - warzywa

wektor < strunowy > warzywa ;

// Spróbuj zwrócić pierwszy element

cout << warzywa. przód ( ) ;

}

Wyjście:

„Jabłko” jest pierwszym elementem występującym w wektorze „owoce”. Zatem jest zwracany. Jednak gdy próbujemy pobrać pierwszy element z wektora „warzywa”, pojawia się błąd, ponieważ jest on pusty.

Pobierz ostatni element z wektora

Funkcja Vector::end() w języku C++ STL pobiera tylko ostatni element wektora.

Składnia:

wektor. z powrotem ( )

Ta funkcja nie przyjmuje żadnego parametru. Jeśli wektor jest pusty, zgłaszany jest błąd.

Stwórzmy dwa wektory – „owoce” i „warzywa” – typu string i spróbujmy pobrać ostatni element oddzielnie od obu wektorów.

#include

#uwzględnij

za pomocą przestrzeń nazw st ;

główny ( )

{

// Utwórz wektor - owoce z 2 elementami

wektor < strunowy > owoce = { 'Jabłko' , 'Mango' } ;

// Pobieranie ostatniego elementu

cout << owoce. z powrotem ( ) << koniec ;



// Zainicjuj wektor - warzywa

wektor < strunowy > warzywa ;

// Spróbuj pobrać ostatni element

cout << warzywa. z powrotem ( ) ;

}

Wyjście:

„Mango” to ostatni element występujący w wektorze „owoce”. Zatem jest zwracany. Jednak gdy próbujemy pobrać ostatni element z wektora „warzywa”, pojawia się błąd, ponieważ jest on pusty.

Przypisz nowe wartości do wektora

W niektórych scenariuszach, jeśli chcesz zaktualizować wszystkie wartości nową wartością lub utworzyć wektor z tymi samymi wartościami, najlepszym podejściem jest użycie funkcji wektor::przypisanie(). Korzystając z tej funkcji możemy:

  1. Utwórz wektor ze wszystkimi podobnymi elementami
  2. Zmodyfikuj istniejący wektor za pomocą tego samego elementu

Składnia:

wektor. przydzielać ( rozmiar, wartość )

Do tej funkcji wymagane są dwa parametry.

Tutaj:

  1. Rozmiar określa liczbę elementów do przypisania.
  2. Wartość określa element, który ma zostać przypisany.

Utwórzmy wektor o nazwie „marks1” z pięcioma wartościami i zaktualizujmy ten wektor czterema elementami w taki sposób, aby wszystkie elementy zaktualizowanego wektora były równe 20.

#include

#include

#uwzględnij

za pomocą przestrzeń nazw st ;

główny ( )

{

// Utwórz wektor - marks1

wektor < wew > znaki1 = { 100 , 90 , 80 , 70 , 60 } ;

cout << „Rzeczywisty wektor:” << koniec ;

Do ( wew I = 0 ; I < znaki1. rozmiar ( ) ; I ++ )

cout << znaki1 [ I ] << koniec ;



znaki1. przydzielać ( 4 , 20 ) ;



cout << ' \N Zaktualizowany wektor:” << koniec ;

Do ( wew I = 0 ; I < znaki1. rozmiar ( ) ; I ++ )

cout << znaki1 [ I ] << koniec ;

}

Wyjście:

Poprzednio wektor zawierał pięć różnych elementów. Teraz zawiera tylko cztery elementy i wszystkie są równe 20.

Rozszerz wektor za pomocą Emplace()

Wiemy już, że nowe elementy są wstawiane dynamicznie w dowolnym miejscu wektora. Jest to możliwe przy użyciu funkcji Vector::emplace(). Przyjrzyjmy się szybko składni i parametrom akceptowanym przez tę funkcję.

Składnia:

wektor. Lokalizacja ( pozycja const_iterator, element )

Do tej funkcji przekazywane są dwa obowiązkowe parametry.

Tutaj:

  1. Pierwszy parametr przyjmuje pozycję dzięki czemu możemy wstawić element w dowolnej pozycji. Pozycję możemy uzyskać za pomocą funkcji iteratora Begin() lub end().
  2. Drugi parametr to element, który należy wstawić do wektora.

Rozważ wektor „chemikaliów” z dwoma elementami.

  1. Wpisz „Mangan” na pierwszej pozycji – rozpocznij (chemikalia)
  2. Na ostatniej pozycji wstaw „Miedź” – koniec (chemikalia)
  3. Wpisz „Siarka” na trzeciej pozycji – Begin(chemikalia)+2
#include

#include

#uwzględnij

za pomocą przestrzeń nazw st ;

główny ( )

{

// Utwórz wektor - chemikalia

wektor < strunowy > chemikalia = { 'Tlen' , 'WSPÓŁ' } ;

cout << „Rzeczywiste chemikalia:” << koniec ;

Do ( wew I = 0 ; I < chemikalia. rozmiar ( ) ; I ++ )

cout << chemikalia [ I ] << koniec ;



// Wstaw element na pierwszej pozycji

chemikalia. Lokalizacja ( zaczynać ( chemikalia ) , 'Mangan' ) ;



// Wstaw element na ostatniej pozycji

chemikalia. Lokalizacja ( koniec ( chemikalia ) , 'Miedź' ) ;



// Wstaw element na trzeciej pozycji

chemikalia. Lokalizacja ( zaczynać ( chemikalia ) + 2 , 'Siarka' ) ;



cout << ' \N Końcowe chemikalia:” << koniec ;

Do ( wew I = 0 ; I < chemikalia. rozmiar ( ) ; I ++ )

cout << chemikalia [ I ] << koniec ;

}

Wyjście:

Teraz końcowy wektor zawiera pięć elementów (pokazanych na poniższym zrzucie ekranu).

Rozszerz wektor za pomocą Emplace_Back()

Można dodać element (dodając na końcu wektora), co można zrobić za pomocą wektor::emplace_back() funkcjonować.

Składnia:

wektor. miejsce_powrót ( element )

Obowiązkowe jest przekazanie elementu, który ma zostać dołączony do wektora, jako parametru.

Dodajmy dwa elementy jeden po drugim za pomocą funkcji emplace_back().

#include

#include

#uwzględnij

za pomocą przestrzeń nazw st ;

główny ( )

{

// Utwórz wektor - chemikalia

wektor < strunowy > chemikalia = { 'Tlen' , 'WSPÓŁ' } ;

cout << „Rzeczywiste chemikalia:” << koniec ;

Do ( wew I = 0 ; I < chemikalia. rozmiar ( ) ; I ++ )

cout << chemikalia [ I ] << koniec ;



// Wstaw mangan na końcu wektora

chemikalia. miejsce_powrót ( 'Mangan' ) ;



// Wstaw mangan na końcu wektora

chemikalia. miejsce_powrót ( 'Miedź' ) ;





cout << ' \N Końcowe chemikalia:” << koniec ;

Do ( wew I = 0 ; I < chemikalia. rozmiar ( ) ; I ++ )

cout << chemikalia [ I ] << koniec ;

}

Wyjście:

Teraz końcowy wektor zawiera cztery elementy po dodaniu „Manganu” i „Miedzi”.

Maksymalny element wektora

  1. Utwórz wektor z pewnymi elementami.
  2. Aby znaleźć maksymalny element występujący w wektorze, użyj funkcji *max_element(), która przyjmuje jako argumenty dwa iteratory. Te dwa parametry pełnią rolę zakresu, a maksymalny element jest zwracany w podanym zakresie. Pozycja początkowa to Begin(), a ostatnia pozycja to end().
* max_element ( pierwszy_indeks, ostatni_indeks )

Rozważmy wektor o nazwie „item_costs”, który przechowuje pięć wartości typu całkowitego i zwraca element maksymalny.

#uwzględnij

#include

#include

za pomocą przestrzeń nazw st ;

główny ( )

{

// Utwórz wektor - koszt_przedmiotu

wektor < wew > koszt_przedmiotu = { 8900 , 5677 , 200 , 1000 , 2300 } ;



cout << „Koszt przedmiotów: \N ' ;

Do ( wew I = 0 ; I < koszt_przedmiotu. rozmiar ( ) ; I ++ )

cout << koszt_przedmiotu [ I ] << koniec ;



// Zwraca maksymalny element z powyższego wektora - koszt_przedmiotu

cout << ' \N Maksymalny koszt: ' << * max_element ( zaczynać ( koszt_przedmiotu ) ,koniec ( koszt_przedmiotu ) ) ;

}

Wyjście:

Tutaj 8900 jest maksymalnym elementem spośród wszystkich elementów obecnych w wektorze „item_costs”.

Minimalny element wektora

  1. Utwórz wektor z pewnymi elementami.
  2. Aby znaleźć minimalny element występujący w wektorze, użyj funkcji *min_element(), która przyjmuje jako argumenty dwa iteratory. Te dwa parametry pełnią rolę zakresu, a element minimalny (mniejszy niż wszystkie inne elementy) jest zwracany w podanym zakresie. Pozycja początkowa to Begin(), a ostatnia pozycja to end().
* min_element ( pierwszy_indeks, ostatni_indeks )

Użyj tego samego wektora, który został utworzony, aby znaleźć element maksymalny i znaleźć element minimalny za pomocą funkcji *min_element().

#uwzględnij

#include

#include

za pomocą przestrzeń nazw st ;

główny ( )

{

// Utwórz wektor - koszt_przedmiotu

wektor < wew > koszt_przedmiotu = { 8900 , 5677 , 200 , 1000 , 2300 } ;



cout << „Koszt przedmiotów: \N ' ;

Do ( wew I = 0 ; I < koszt_przedmiotu. rozmiar ( ) ; I ++ )

cout << koszt_przedmiotu [ I ] << koniec ;



// Zwraca minimalny element z powyższego wektora – koszt_przedmiotu

cout << ' \N Minimalny koszt: ' << * min_element ( zaczynać ( koszt_przedmiotu ) ,koniec ( koszt_przedmiotu ) ) ;

}

Wyjście:

Tutaj 200 jest minimalnym elementem spośród wszystkich elementów obecnych w wektorze „item_costs”.

Suma elementów w wektorze

Aby zwrócić sumę wszystkich elementów występujących w wektorze, należy zastosować metodę gromadzić() używana jest funkcja w języku C++ STL. Akceptuje trzy parametry. Pierwszy parametr przyjmuje pierwszy indeks reprezentujący element początkowy w zakresie (określ iterator Begin()), a drugi parametr przyjmuje ostatni indeks reprezentujący element końcowy w zakresie (określ iterator end()). Na koniec musimy przekazać wartość początkową sumy (w naszym przypadku jest to 0).

gromadzić ( pierwszy_indeks, ostatni_indeks, wartość_początkowa ) ;

Utwórz wektor o nazwie „item_costs” z pięcioma elementami typu całkowitego i oblicz sumę.

#include

za pomocą przestrzeń nazw st ;

główny ( )

{

// Utwórz wektor - koszt_przedmiotu

wektor < wew > koszt_przedmiotu = { 8900 , 5677 , 200 , 1000 , 2300 } ;



cout << „Koszt przedmiotów: \N ' ;

Do ( wew I = 0 ; I < koszt_przedmiotu. rozmiar ( ) ; I ++ )

cout << koszt_przedmiotu [ I ] << koniec ;



// Zwraca sumę wszystkich elementów powyższego wektora - item_costs

cout << ' \N Całkowity koszt: ' << gromadzić ( zaczynać ( koszt_przedmiotu ) ,koniec ( koszt_przedmiotu ) , 0 ) ;

}

Wyjście:

Suma 8900, 5677, 200, 1000, 2300 wynosi 18077.

Mnożenie elementarne dwóch wektorów

  1. Utwórz dwa wektory typu numeric, przy czym dwa wektory muszą być tego samego rozmiaru (całkowita liczba elementów występujących w pierwszym wektorze = całkowita liczba elementów występujących w drugim wektorze).
  2. Zadeklaruj nowy wektor i użyj metody dla pętli , wykonaj operację mnożenia na dwóch elementach w każdej iteracji i zapisz wartość w utworzonym wektorze za pomocą funkcji push_back().
  3. Do ( wew itr = 0 ; I < pierwszy_vec. rozmiar ( ) ; itr ++ )

    {

    wektor_wyniku. push_back ( pierwszy_vec [ itr ] * sekunda_rzecz [ itr ] ) ;

    }
  4. Wyświetl elementy obecne w wynikowym wektorze, iterując go.

Utwórz wektor o nazwie „item_costs” z pięcioma elementami typu całkowitego i oblicz sumę.

#include

za pomocą przestrzeń nazw st ;

główny ( )

{

// Utwórz dwa wektory - produkty1 i produkty2, każdy po 5 elementów

wektor < wew > produkty1 = { 10 , 20 , 30 , 40 , pięćdziesiąt } ;

wektor < wew > produkty2 = { pięćdziesiąt , 40 , 30 , 70 , 60 } ;



wektor < wew > produkty_wynikowe ;



// Wykonaj mnożenie elementów

Do ( wew I = 0 ; I < produkty1. rozmiar ( ) ; I ++ ) {

produkty_wynikowe. push_back ( produkty1 [ I ] * produkty2 [ I ] ) ;

}



// Wyświetl wynikowy wektor

cout << „Mnożenie wektorów: \N ' ;

Do ( wew rez : produkty_wynikowe )

cout << rez << koniec ;

}

Wyjście:

Iteracja - 1 : 10 * pięćdziesiąt => 500

Iteracja - 2 : 20 * 40 => 800

Iteracja - 3 : 30 * 30 => 900

Iteracja - 4 : 40 * 70 => 2800

Iteracja - 5 : pięćdziesiąt * 60 => 3000

Iloczyn skalarny dwóch wektorów

W przypadku wektorów C++ iloczyn skalarny definiuje się jako „sumę iloczynów odpowiednich wpisów dwóch sekwencji wektorów”.

Składnia:

produkt_wewnętrzny ( Najpierw wektor1, ostatni wektor1, najpierw wektor2, wartość początkowa )

Użyj funkcji inside_product(), aby zwrócić iloczyn skalarny. Funkcja ta przyjmuje cztery wymagane parametry.

Tutaj:

  1. Pierwszy parametr odnosi się do iteratora, który wskazuje początek pierwszego wektora (określ za pomocą funkcji Begin()).
  2. Drugi parametr odnosi się do iteratora, który wskazuje koniec pierwszego wektora (określ za pomocą funkcji end()).
  3. Trzeci parametr odnosi się do iteratora, który wskazuje początek drugiego wektora (określ za pomocą funkcji Begin()).
  4. Wartość początkową należy przekazać jako ostatni parametr, który jest liczbą całkowitą służącą do akumulacji iloczynu skalarnego.

Wykorzystaj ten sam program, który został stworzony do mnożenia dwóch wektorów i użyj funkcji innsr_product(), aby znaleźć iloczyn skalarny dwóch wektorów.

#include

za pomocą przestrzeń nazw st ;

główny ( )

{

// Utwórz dwa wektory - produkty1 i produkty2, każdy po 5 elementów

wektor < wew > produkty1 = { 10 , 20 , 30 , 40 , pięćdziesiąt } ;

wektor < wew > produkty2 = { pięćdziesiąt , 40 , 30 , 70 , 60 } ;



// Wyświetl wynikowy wektor

cout << „Iloczyn kropkowy produktów1 i produktów2:” ;

cout << produkt_wewnętrzny ( zaczynać ( produkty1 ) ,koniec ( produkty1 ) ,zaczynać ( produkty2 ) , 0 ) ;

}

Wyjście:

( 10 * pięćdziesiąt ) + ( 20 * 40 ) + ( 30 * 30 ) + ( 40 * 70 ) + ( pięćdziesiąt * 60 )

=> 500 + 800 + 900 + 2800 + 3000

=> 8000

Konwertuj zbiór na wektor

Istnieje wiele sposobów konwersji zbioru na wektor poprzez przekazanie wszystkich elementów podniesionych w zestawie do wektora. Najlepszym i najprostszym sposobem jest użycie funkcji std::copy().

Składnia

st :: Kopiuj ( najpierw sourceIterator, na końcu sourceIterator, najpierw docelowyIterator )

Użyj std::kopia() funkcja wstawiająca elementy ze zbioru do wektora. Wymaga trzech parametrów.

Tutaj:

  1. Pierwszy parametr odnosi się do iteratora źródłowego, który wskazuje pierwszy element iteratora. Tutaj set jest iteratorem źródłowym określonym za pomocą funkcji Begin().
  2. Podobnie drugi parametr wskazuje na ostatni element (funkcja end()).
  3. Trzeci parametr odnosi się do iteratora docelowego, który wskazuje pierwszy element (określony za pomocą funkcji Begin()) w iteratorze.

Utwórzmy zbiór z pięcioma uczniami i skopiujmy wszystkie elementy do wektora, korzystając z poprzedniej funkcji.

#include

za pomocą przestrzeń nazw st ;

główny ( )

{

// Utwórz zestaw - uczniowie z 5 elementami

ustawić < strunowy > studenci = { „Srawan” , 'Konstabl' , „Madhu” , „Meghana” , „Lawana” } ;

cout << 'Ustawić: \N ' ;

Do ( ciąg I : studenci )

cout << I << koniec ;



// Utwórz wektor - rozmiar student_vcof równy rozmiarowi zestawu

wektor < strunowy > student_vc ( studenci. rozmiar ( ) ) ;



// Wstaw elementy ze zbioru - studenci do wektora - student_vc.

Kopiuj ( studenci. zaczynać ( ) , studenci. koniec ( ) , student_vc. zaczynać ( ) ) ;



cout << ' \N Wektor: \N ' ;

Do ( ciąg I : student_vc )

cout << I << koniec ;

}

Wyjście:

Teraz wszystkie elementy znajdujące się w zestawie „Students” są kopiowane do wektora „students_vc”.

Usuń zduplikowane elementy

  1. Najpierw musimy posortować elementy wektora tak, aby wszystkie zduplikowane elementy sąsiadowały ze sobą za pomocą metody std::sort() funkcjonować.
  2. st :: sortować ( Najpierw wektor, potem wektor ) ;
  3. Użyj funkcji std::unique(), aby wybrać zduplikowane elementy. Jednocześnie użyj funkcji erase() w celu usunięcia duplikatów zwracanych przez funkcję std::unique(). Kolejność elementów w ostatecznym wektorze może ulec zmianie.
  4. wektor. usuwać ( st :: unikalny ( Najpierw wektor, potem wektor ) , Ostatni wektor ) )

Utwórz wektor „studentów” składający się z 10 elementów i zwróć wektor, usuwając duplikaty.

#include

za pomocą przestrzeń nazw st ;

główny ( )

{

// Utwórz wektor - uczniowie z 10 elementami

wektor < strunowy > studenci = { „Srawan” , 'Konstabl' , „Madhu” , „Meghana” , „Lawana” ,

„Srawan” , 'Konstabl' , „Madhu” , „Meghana” , „Lawana” } ;

cout << „Studenci: \N ' ;

Do ( ciąg I : studenci )

cout << I << ' ' ;



// Sortuj wszystkie elementy wektora uczniów.

sortować ( zaczynać ( studenci ) , koniec ( studenci ) ) ;



// Użyj funkcji Unique(), aby usunąć duplikaty za pomocą funkcji Erase().

studenci. usuwać ( unikalny ( zaczynać ( studenci ) , koniec ( studenci ) ) , koniec ( studenci ) ) ;



cout << ' \N \N Wyjątkowi studenci: \N ' ;

Do ( automatyczny itr = czacznij ( studenci ) ; itr ! = kilka ( studenci ) ; ++ itr ) {

cout << * itr << ' ' ;

}

}

Wyjście:

Teraz wszystkie elementy są unikalne w wektorze.

Konwertuj wektor na zbiór

Zestaw nie pozwala na powielanie elementów. Jeśli piszesz, aby wstawić wektor do zestawu z duplikatami, zostaną one zignorowane. Używamy tej samej funkcji std::copy(), która została użyta w poprzednim scenariuszu, podczas którego konwertowano zbiór na wektor.

W tym scenariuszu:

  1. Pierwszy parametr przyjmuje wektor jako iterator źródłowy określony za pomocą funkcji Begin().
  2. Drugi parametr przyjmuje wektor jako iterator źródłowy określony za pomocą funkcji end().
  3. Przekaż funkcję std::inserter(), która służy do automatycznego nadpisywania/kopiowania elementów w określonej pozycji w zestawie, podając zestaw i iterator wskazujący koniec zestawu jako parametry.

Stwórzmy wektor składający się z 10 liczb całkowitych i skopiujmy elementy do zbioru.

#include

za pomocą przestrzeń nazw st ;

główny ( )

{

// Utwórz zestaw - zaznacza 10 wartości

wektor < wew > znaki = { 12 , 3. 4 , 56 , 78 , 65 , 78 , 90 , 90 , 78 , 3. 4 } ;

cout << 'Wektor: \N ' ;

Do ( wew I : znaki )

cout << I << ' ' ;



// Utwórz zestaw - zestaw_znaków o rozmiarze równym rozmiarowi wektora

ustawić < wew > znaki_zestaw ;



// Wstaw elementy ze zbioru - studenci do wektora - student_vc.

Kopiuj ( zaczynać ( znaki ) ,koniec ( znaki ) , wkładacz ( znaki_zestaw, koniec ( znaki_zestaw ) ) ) ;



cout << ' \N \N Ustawić: \N ' ;

Do ( wew I : znaki_zestaw )

cout << I << ' ' ;

}

Wyjście:

Istniejący wektor o nazwie „znaki” ma 10 wartości. Po skopiowaniu go do zbioru „marks_set” zawiera tylko sześć elementów, ponieważ pozostałe cztery elementy są zduplikowane.

Usuń puste ciągi

Puste ciągi znaków obecne w wektorze nie mają zastosowania. Dobrą praktyką jest usuwanie pustych ciągów znaków obecnych w wektorze. Zobaczmy, jak usunąć puste ciągi z wektora C++:

  1. Iteruj wektor za pomocą pętli „for”.
  2. W każdej iteracji sprawdź, czy element jest pusty („”) lub czy nie używasz operatora „==” z funkcją członkowską at().
  3. Używając funkcji std::erase() usuń puste ciągi znaków po sprawdzeniu poprzedniego warunku.
  4. Powtarzaj krok 2 i krok 3 aż do końca wektora.

Stwórzmy wektor „firm” z 10 ciągami znaków. Wśród nich pięć jest pustych i usuwamy je, wdrażając poprzednie podejście.

#include

#uwzględnij

za pomocą przestrzeń nazw st ;

główny ( ) {



wektor < strunowy > firmy { „Firma-A” , „” , „Firma B” ,

„” , „Firma-C” , „” , „Firma-D” , „” , „” , „” } ;



// Iteruj po firmach

// i usuń puste elementy za pomocą funkcji erase()

Do ( wew itr = 1 ; itr < firmy. rozmiar ( ) ; ++ itr ) {

Jeśli ( firmy. Na ( itr ) == „” ) {

firmy. usuwać ( firmy. zaczynać ( ) + itr ) ;

-- itr ;

}
}

// Wyświetl wektor


Do ( automatyczny & I : firmy ) {

cout << I << koniec ;

}

}

Wyjście:

Teraz wektor „firm” zawiera niepuste ciągi znaków.

Zapisz wektor do pliku tekstowego

Omówmy, jak zapisać wszystkie elementy obecne w wektorze do pliku przy użyciu indeksów wektorów za pomocą fstream .

  1. Wciśnij do niego niektóre elementy za pomocą funkcji push_back po inicjalizacji wektora.
  2. Użyj funkcji open() z biblioteki „fstream” w trybie out.
  3. Przemierzaj każdy element występujący w wektorze, korzystając z indeksów w pętli „for” i zapisz każdy element w dostarczonym pliku.
  4. Na koniec zamknij plik.

Zaimplementujmy poprzednie podejście, uruchamiając kod C++.

#uwzględnij

#include

#include

#include

za pomocą przestrzeń nazw st ;

główny ( )

{

// Utwórz wektor - v_data

// i włóż do niego dwa elementy.

wektor < strunowy > v_dane ;

v_dane. push_back ( 'Powitanie' ) ;

v_dane. push_back ( „do LinuksaWskazówka” ) ;

strumień f ;



// Otwórz plik

F. otwarty ( „plik_pisany.txt” ,ios_base :: na zewnątrz ) ;

// Iteruj każdy element wektora i zapisz jeden po drugim do pliku.

Do ( wew I = 0 ; I < v_dane. rozmiar ( ) ; I ++ )

{

F << v_dane [ I ] << koniec ;

}

// Zamknij plik

F. zamknąć ( ) ;

}

Wyjście:

Wektor „v_data” zawiera dwa elementy, a w ścieżce, w której wykonywany jest program, tworzony jest plik z elementami obecnymi w wektorze.

Utwórz wektor z pliku tekstowego

Dowiedzieliśmy się jak zapisać elementy obecne w wektorze do pliku tekstowego. Tutaj utwórzmy wektor z treści zawartej w pliku tekstowym.

  1. Stworzyć ' jeśli strumień” zmienna służąca do odczytania informacji z pliku tekstowego, w którym z pliku tworzymy wektor.
  2. Utwórz pusty wektor do przechowywania zawartości pliku i użyj pustej zmiennej łańcuchowej jako flagi, aby sprawdzić koniec pliku.
  3. Przeczytaj następną linię z pliku, aż dotrze do końca (w zasadzie za pomocą pętli „while”). Użyj funkcji push_back(), aby przeczytać następną linię i wepchnąć ją do wektora.
  4. Wyświetl oddzielnie linię obecną w linii, aby zobaczyć elementy obecne w wektorze na konsoli.

Zaimplementujmy poprzednie podejście, uruchamiając kod C++. Rozważmy plik „data.txt” o następującej zawartości. Tutaj nazwa wektora to „v_data”.

#include

za pomocą przestrzeń nazw st ;

główny ( )

{

// Otwórz plik tekstowy - dane
plik ifstream ( „dane.txt” ) ;

// Utwórz wektor - v_data typu - string


wektor < strunowy > v_dane ;

stringi były ;

// Przeczytaj następną linię z pliku data.txt
// aż do końca.


chwila ( plik >> był ) {

// Przeczytaj następną linię i wciśnij do pliku v_data

v_dane. push_back ( był ) ;

}



// Wyświetl oddzielnie linię znajdującą się w linii.

Kopiuj ( v_dane. zaczynać ( ) , v_data. koniec ( ) , ostream_iterator < strunowy > ( cout , ' \N ' ) ) ;

}

Wyjście:

Widzimy, że „v_data” zawiera pięć elementów pochodzących z pliku.

Wniosek

W tym długim artykule zbadaliśmy wszystkie możliwe przykłady, które są wykorzystywane w aplikacjach czasu rzeczywistego związanych z wektorami w języku programowania C++. Każdy przykład jest wyjaśniony za pomocą składni, parametrów i przykładu z wynikami. Komentarze są dodawane do każdego kodu, aby uzyskać jasne zrozumienie kodu.