Wektor w C++ Standardowa biblioteka szablonów (STL) z przykładem
⚡ Inteligentne podsumowanie
Wektor w C++ jest dynamiczną tablicą ze standardowej biblioteki szablonów, która automatycznie zmienia swój rozmiar w miarę dodawania lub usuwania elementów. Przechowuje elementy w ciągłej pamięci, dzięki czemu programiści mogą uzyskać do nich dostęp i poruszać się po nich za pomocą iteratorów.

Czym są sterowniki C++ Wektor?
A C++ Wektor to dynamiczna tablica, która może automatycznie zmieniać rozmiar. Zmiana rozmiaru następuje po dodaniu lub usunięciu elementu z wektora. Przechowywanie jest obsługiwane automatycznie przez kontener. Elementy wektora są przechowywane w ciągłym magazynie. Pozwala to C++ programistom dostęp do elementów wektorów i poruszanie się po nich za pomocą iteratorów.
Wprowadzanie nowych danych do wektora odbywa się na jego końcu. Zajmuje to czas różnicowy. Usunięcie elementu z wektora zajmuje czas stały. Wynika to z braku konieczności zmiany rozmiaru wektora. Wstawianie lub usuwanie elementu na początku wektora zajmuje czas liniowy.
Zanim zaczniesz pisać kod przy użyciu wektorów, warto wiedzieć, kiedy są one właściwym pojemnikiem, po który można sięgnąć.
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 przed rozpoczęciem nie jest znany rozmiar danych, wektor nie będzie wymagał ustawienia 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 jest typem danych elementów, które mają być przechowywane w wektorze.
- Nazwa jest nazwą wektora lub elementów danych.
- szt Określa liczbę elementów danych wektorowych. Ten parametr jest opcjonalny.
Gdy wektor już istnieje, iteratory umożliwiają poruszanie się po jego elementach, podobnie jak ma to miejsce w przypadku wskaźników.
Iteratory
Celem iteratorów jest ułatwienie dostępu do elementów przechowywanych w wektorze. Jest to obiekt działający jak wskaźnik. Oto typowe iteratory obsługiwane przez C++ wektory:
- wektor::begin(): daje iterator wskazujący pierwszy element wektora.
- wektor::koniec(): daje iterator wskazujący na element końcowy wektora.
- wektor::cbegin(): jest tym samym co vector::begin(), ale nie ma możliwości modyfikowania elementów.
- wektor::cend(): działa tak samo jak vector::end(), ale nie może modyfikować elementów wektora.
Poniższy przykład wypełnia wektor, a następnie przechodzi przez niego przy użyciu iteratorów zmiennych i stałych.
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:
Code Wyjaśnienie:
- 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 ułatwi nam iterację po wektorze. Zmienna pomoże nam iterować po elementach wektora, od pierwszego do piątego.
- 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 a 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 wektora nums od początku do elementu za końcem. Zwróć uwagę, ż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().
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.
W następnym przykładzie zastosowano te modyfikatory po kolei, aby zobaczyć, jak zmienia się wektor.
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:
Code Wyjaśnienie:
- 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 móc korzystać z jego funkcji.
- 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ść
Użyj poniższego Funkcje aby określić pojemność wektora:
- Rozmiar() – Zwraca liczbę elementów w wektorze.
- Największy rozmiar() – Zwraca największą liczbę elementów, jaką wektor może przechowywać.
- Pojemność() – Zwraca ilość miejsca w pamięci przydzielonego wektorowi.
- Zmień rozmiar() – Zmienia rozmiar kontenera, aby zawierał n elementów. Jeśli bieżący rozmiar wektora jest większy niż n, elementy z tyłu zostaną usunięte z wektora. Jeśli bieżący rozmiar wektora jest mniejszy niż n, dodatkowe elementy zostaną dodane z tyłu wektora.
- Pusty() – zwraca wartość true, jeśli wektor jest pusty. W przeciwnym razie zwraca wartość false.
Ten ostatni przykład raportuje i dostosowuje przechowywanie wektora przy użyciu funkcji pojemnościowych opisanych powyżej.
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:
Code Wyjaśnienie:
- 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().





