Wektor w C++ Standardowa biblioteka szablonów (STL) z przykładem
Czym są sterowniki C++ Wektor?
A C++ wektor jest dynamiczną tablicą zdolną do automatycznej zmiany rozmiaru. Zmiana rozmiaru następuje po dodaniu lub usunięciu elementu z wektora. Magazynowanie odbywa się automatycznie poprzez kontener. Elementy wektora są przechowywane w ciągłej pamięci. To pozwala C++ programistom dostęp do elementów wektorów i poruszanie się po nich za pomocą iteratorów.
Wstawianie nowych danych do wektora odbywa się na jego końcu. Wymaga to zróżnicowanego czasu. Usunięcie elementu z wektora zajmuje stały czas. Powodem jest to, że nie ma potrzeby zmiany rozmiaru wektora. Wstawienie lub usunięcie elementu na początku wektora zajmuje czas liniowy.
Kiedy używać wektora?
A C++ wektor powinien być używany w następujących okolicznościach:
- Kiedy mamy do czynienia z elementami danych, które stale się zmieniają.
- Jeśli rozmiar danych nie jest znany przed rozpoczęciem, wektor nie będzie wymagał ustawiania maksymalnego rozmiaru kontenera.
Jak inicjować wektory w C++
Składnia wektorów w C++ jest:
vector <data-type> name (items)
- Jak pokazano powyżej, zaczynamy od słowa kluczowego wektor.
- Typ danych to typ danych elementów, które mają być przechowywane w wektorze.
- Nazwa to nazwa wektora lub elementów danych.
- Pozycje oznaczają liczbę elementów danych wektora. Ten parametr jest opcjonalny.
Iteratory
Celem iteratorów jest umożliwienie nam dostępu do elementów przechowywanych w wektorze. To obiekt, który działa jak wskaźnik. Oto popularne iteratory obsługiwane przez C++ wektory:
- wektor:: początek(): daje iterator wskazujący pierwszy element wektora.
- wektor:: koniec(): daje iterator wskazujący na element końcowy wektora.
- wektor::cbegin(): jest taka sama jak wektor::begin(), ale nie ma możliwości modyfikowania elementów.
- wektor::cend(): jest taki sam jak wektor::end(), ale nie może modyfikować elementów wektorowych.
modyfikatory
Modyfikatory służą do zmiany znaczenia określonego typu danych. Oto typowe modyfikatory w C++:
- wektor::push_back(): Modyfikator ten wypycha elementy od tyłu.
- wektor::wstaw(): Do wstawiania nowych elementów do wektora w określonym miejscu.
- wektor::pop_back(): Ten modyfikator usuwa elementy wektora z tyłu.
- wektor::usuń(): Służy do usuwania zakresu elementów z określonej lokalizacji.
- wektor::jasny(): Usuwa wszystkie elementy wektora.
1 przykład
#include <iostream> #include <vector> using namespace std; int main() { vector<int> nums; for (int a = 1; a <= 5; a++) nums.push_back(a); cout << "Output from begin and end: "; for (auto a = nums.begin(); a != nums.end(); ++a) cout << *a << " "; cout << "\nOutput from cbegin and cend: "; for (auto a = nums.cbegin(); a != nums.cend(); ++a) cout << *a << " "; return 0; }
Wyjście:
Oto zrzut ekranu kodu:
Wyjaśnienie kodu:
- Dołącz plik nagłówkowy iostream do naszego kodu. Umożliwi nam to odczytywanie i zapisywanie na konsoli.
- Dołącz plik nagłówkowy wektora do naszego kodu. Umożliwi nam to pracę z wektorami w C++.
- Dołącz przestrzeń nazw std, aby móc korzystać z jej klas i funkcji bez wywoływania jej.
- Wywołaj funkcję main(), wewnątrz której należy dodać logikę programu.
- { oznacza początek treści funkcji main().
- Zadeklaruj wektor o nazwie nums do przechowywania zestawu liczb całkowitych.
- Utwórz pętlę for, która pomoże nam iterować po wektorze. Zmienna pomoże nam iterować po elementach wektorowych, począwszy od 1st do 5th elementy.
- Wciśnij elementy do wektora num od tyłu. Dla każdej iteracji spowoduje to dodanie do wektora bieżącej wartości zmiennej a, która wynosi od 1 do 5.
- Wydrukuj tekst na konsoli
- Użyj zmiennej iteratora a, aby iterować po elementach wektorów nums od początku do elementu końcowego. Zauważ, że używamy iteratorów Vector::begin() i Vector::end().
- Wydrukuj wartości wskazywane przez zmienną iteratora an na konsoli dla każdej iteracji.
- Wydrukuj tekst na konsoli. \n to znak nowej linii, przesuwający kursor do nowej linii, aby stamtąd wydrukować.
- Użyj zmiennej iteratora, aby iterować po elementach liczb wektorowych od początku do elementu końcowego. Zauważ, że używamy iteratorów Vector::cbegin() i Vector::cend().
- Wydrukuj wartości wskazywane przez zmienną iteratora a na konsoli dla każdej iteracji.
- Funkcja główna powinna zwrócić wartość, jeśli program działa pomyślnie.
- Koniec treści funkcji main().
2 przykład
#include <iostream> #include <vector> using namespace std; int main() { vector<int> nums; nums.assign(5, 1); cout << "Vector contents: "; for (int a = 0; a < nums.size(); a++) cout << nums[a] << " "; nums.push_back(2); int n = nums.size(); cout << "\nLast element: " << nums[n - 1]; nums.pop_back(); cout << "\nVector contents: "; for (int a = 0; a < nums.size(); a++) cout << nums[a] << " "; nums.insert(nums.begin(), 7); cout << "\nFirst element: " << nums[0]; nums.clear(); cout << "\nSize after clear(): " << nums.size(); }
Wyjście:
Oto zrzut ekranu kodu:
Wyjaśnienie kodu:
- Dołącz plik nagłówkowy iostream do naszego kodu, aby móc korzystać z jego funkcji.
- Dołącz plik nagłówkowy wektora do naszego kodu, aby go użyć Funkcje.
- Dołącz przestrzeń nazw std, aby używać jej klas bez wywoływania jej.
- Wywołaj funkcję main(). Logikę programu należy dodać wewnątrz jego treści.
- Początek treści funkcji main().
- Zadeklaruj wektor o nazwie nums do przechowywania niektórych wartości całkowitych.
- Przechowuj 5 elementów w wektorach nums. Każdy o wartości 1.
- Wydrukuj tekst na konsoli
- Użyj zmiennej iteratora a do iteracji po elementach wektorów nums.
- Wydrukuj wartości liczb wektorowych na konsoli dla każdej iteracji.
- Dodaj wartość 2 na końcu liczb wektorowych.
- Zadeklaruj zmienną całkowitą n, aby przechowywać rozmiar wektorów num.
- Wydrukuj ostatnią wartość liczb wektorowych obok innego tekstu. Powinien zwrócić 2.
- Usuń ostatni element z wektorów num. 2 zostaną usunięte.
- Wydrukuj tekst na konsoli. \n przesuwa kursor do nowej linii, aby wydrukować tam tekst.
- Użyj zmiennej iteratora a do iteracji po elementach wektorów nums.
- Wydrukuj wartości liczb wektorowych na konsoli dla każdej iteracji.
- Wstaw wartość 7 na początek liczb wektorowych.
- Wydrukuj pierwszą wartość liczb wektorowych obok innego tekstu. Powinno zwrócić 7.
- Usuń wszystkie elementy z numerów wektorowych.
- Po wyczyszczeniu całej zawartości wydrukuj rozmiar wektora num obok innego tekstu. Powinno zwrócić 0.
- Koniec treści funkcji main().
Pojemność
Aby określić pojemność wektora, użyj następujących funkcji:
- Rozmiar() –Zwraca liczbę elementów w wektorze.
- Największy rozmiar() -Zwraca największą liczbę elementów, jakie wektor może przechowywać.
- Pojemność () –To zwraca ilość miejsca przydzielonego wektorowi.
- Zmień rozmiar () –To zmienia rozmiar kontenera tak, aby zawierał n elementów. Jeśli bieżący rozmiar wektora jest większy niż n, tylne elementy zostaną usunięte z wektora. Jeśli bieżący rozmiar wektora jest mniejszy niż n, z tyłu wektora zostaną dodane dodatkowe elementy.
- Pusty () –tjt zwraca wartość true, jeśli wektor jest pusty. W przeciwnym razie zwraca wartość false.
3 przykład
#include <iostream> #include <vector> using namespace std; int main() { vector<int> vector1; for (int x = 1; x <= 10; x++) vector1.push_back(x); cout << "Vector size: " << vector1.size()<< endl; cout << "Vector capacity: " << vector1.capacity() << endl; cout << "Maximum size of vector: " << vector1.max_size()<< endl; vector1.resize(5); cout << "Vector size after resizing: " << vector1.size() << endl; if (vector1.empty() == false) cout << "Vector is not empty"<<endl; else cout << "Vector is empty"<<endl; return 0; }
Wyjście:
Oto zrzut ekranu kodu:
Wyjaśnienie kodu:
- Dołącz plik nagłówkowy iostream do naszego kodu, aby skorzystać z jego funkcji.
- Dołącz plik nagłówkowy wektora do naszego kodu, aby móc korzystać z jego funkcji.
- Dołącz przestrzeń nazw std do naszego kodu, aby używać jej klas bez wywoływania jej.
- Wywołaj funkcję main(). Logikę programu należy dodać w treści tej funkcji.
- Utwórz wektor o nazwie wektor1 do przechowywania liczb całkowitych.
- Użyj pętli for, aby utworzyć zmienną x o wartościach od 1 do 10.
- Wciśnij wartości zmiennej x do wektora.
- Wydrukuj rozmiar wektora wraz z innym tekstem na konsoli.
- Wydrukuj pojemność wektora wraz z innym tekstem na konsoli.
- Wydrukuj maksymalną liczbę elementów, które wektor może pomieścić obok innego tekstu na konsoli.
- Zmień rozmiar wektora, aby zawierał tylko 5 elementów.
- Wydrukuj nowy rozmiar wektora wraz z innym tekstem.
- Sprawdź, czy wektor nie jest pusty.
- Wydrukuj tekst na konsoli, jeśli wektor nie jest pusty.
- Użyj instrukcji else, aby określić, co zrobić, jeśli wektor jest pusty.
- Tekst do wydrukowania na konsoli, jeśli wektor jest pusty.
- Program musi zwrócić wartość po pomyślnym zakończeniu.
- Koniec treści funkcji main().
Podsumowanie
- A C++ wektor to dynamiczna tablica zdolna do automatycznej zmiany rozmiaru po dodaniu lub usunięciu elementu.
- Przechowywanie wektora jest obsługiwane automatycznie przez kontener.
- Elementy wektora są przechowywane w ciągłej pamięci, aby można było uzyskać do nich dostęp, a następnie przechodzić za pomocą iteratorów.
- Wstawianie nowych danych do wektora odbywa się na jego końcu.
- Wstawienie danych do wektora wymaga czasu różnicowego.
- Usunięcie elementu z wektora zajmuje stały czas.
- Wstawienie lub usunięcie elementu na początku zajmuje czas liniowy.
- W przypadku elementów danych, które stale się zmieniają, należy używać wektorów.
- Możesz także użyć wektorów, jeśli rozmiar danych nie jest znany przed rozpoczęciem.