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.

  • 📦 Tablica dynamiczna: A C++ wektor rośnie lub maleje automatycznie, w przeciwieństwie do statycznej tablicy o stałym rozmiarze.
  • 🧩 Nagłówek i składnia: Dołącz nagłówek wektora, a następnie zadeklaruj wektor nazwa do przechowywania elementów typowych.
  • 🧭 Iteratory: Funkcje begin(), end(), cbegin() i cend() poruszają się po elementach wektora jak wskaźniki.
  • 🛠️. Modyfikatory: push_back(), insert(), pop_back(), erase() i clear() zmieniają zawartość wektora.
  • 📐 Pojemność: size(), capacity(), max_size(), resize() i empty() raportują lub dostosowują pamięć masową.
  • 🤖 Pomoc AI: GitHub Copilot i podobne rozwiązania wspomagające sztuczną inteligencję obsługują operacje wektorowe na podstawie krótkiego komentarza.

C++ Wektor STL

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:

C++ iteratory wektorowe Przykład 1 wyjście

Oto zrzut ekranu kodu:

C++ iteratory wektorowe Przykład 1 kod

Code Wyjaśnienie:

  1. Dołącz plik nagłówkowy iostream do naszego kodu. Umożliwi nam to odczytywanie i zapisywanie na konsoli.
  2. Dołącz plik nagłówkowy wektora do naszego kodu. Umożliwi nam to pracę z wektorami w C++.
  3. Dołącz przestrzeń nazw std, aby móc korzystać z jej klas i funkcji bez wywoływania jej.
  4. Wywołaj funkcję main(), wewnątrz której należy dodać logikę programu.
  5. { oznacza początek treści funkcji main().
  6. Zadeklaruj wektor o nazwie nums do przechowywania zestawu liczb całkowitych.
  7. 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.
  8. 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.
  9. Wydrukuj tekst na konsoli.
  10. 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().
  11. Wydrukuj wartości wskazywane przez zmienną iteratora a na konsoli dla każdej iteracji.
  12. Wydrukuj tekst na konsoli. \n to znak nowej linii, przesuwający kursor do nowej linii, aby stamtąd wydrukować.
  13. 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().
  14. Wydrukuj wartości wskazywane przez zmienną iteratora a na konsoli dla każdej iteracji.
  15. Funkcja główna powinna zwrócić wartość, jeśli program działa pomyślnie.
  16. 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:

C++ modyfikatory wektorowe Przykład 2 wyjście

Oto zrzut ekranu kodu:

C++ Przykład 2 kodu modyfikatorów wektorowych

Code Wyjaśnienie:

  1. Dołącz plik nagłówkowy iostream do naszego kodu, aby móc korzystać z jego funkcji.
  2. Dołącz plik nagłówkowy wektora do naszego kodu, aby móc korzystać z jego funkcji.
  3. Dołącz przestrzeń nazw std, aby używać jej klas bez wywoływania jej.
  4. Wywołaj funkcję main(). Logikę programu należy dodać wewnątrz jego treści.
  5. Początek treści funkcji main().
  6. Zadeklaruj wektor o nazwie nums do przechowywania niektórych wartości całkowitych.
  7. Przechowuj 5 elementów w wektorach nums. Każdy o wartości 1.
  8. Wydrukuj tekst na konsoli.
  9. Użyj zmiennej iteratora a do iteracji po elementach wektorów nums.
  10. Wydrukuj wartości liczb wektorowych na konsoli dla każdej iteracji.
  11. Dodaj wartość 2 na końcu liczb wektorowych.
  12. Zadeklaruj zmienną całkowitą n, aby przechowywać rozmiar wektorów num.
  13. Wydrukuj ostatnią wartość liczb wektorowych obok innego tekstu. Powinien zwrócić 2.
  14. Usuń ostatni element z wektorów num. 2 zostaną usunięte.
  15. Wydrukuj tekst na konsoli. \n przesuwa kursor do nowej linii, aby wydrukować tam tekst.
  16. Użyj zmiennej iteratora a do iteracji po elementach wektorów nums.
  17. Wydrukuj wartości liczb wektorowych na konsoli dla każdej iteracji.
  18. Wstaw wartość 7 na początek liczb wektorowych.
  19. Wydrukuj pierwszą wartość liczb wektorowych obok innego tekstu. Powinno zwrócić 7.
  20. Usuń wszystkie elementy z numerów wektorowych.
  21. Po wyczyszczeniu całej zawartości wydrukuj rozmiar wektora num obok innego tekstu. Powinno zwrócić 0.
  22. 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:

C++ pojemność wektorowa Przykład 3 wyjście

Oto zrzut ekranu kodu:

C++ przykład 3 kodu pojemności wektorowej

Code Wyjaśnienie:

  1. Dołącz plik nagłówkowy iostream do naszego kodu, aby skorzystać z jego funkcji.
  2. Dołącz plik nagłówkowy wektora do naszego kodu, aby móc korzystać z jego funkcji.
  3. Dołącz przestrzeń nazw std do naszego kodu, aby używać jej klas bez wywoływania jej.
  4. Wywołaj funkcję main(). Logikę programu należy dodać w treści tej funkcji.
  5. Utwórz wektor o nazwie wektor1 do przechowywania liczb całkowitych.
  6. Użyj pętli for, aby utworzyć zmienną x o wartościach od 1 do 10.
  7. Wciśnij wartości zmiennej x do wektora.
  8. Wydrukuj rozmiar wektora wraz z innym tekstem na konsoli.
  9. Wydrukuj pojemność wektora wraz z innym tekstem na konsoli.
  10. Wydrukuj maksymalną liczbę elementów, które wektor może pomieścić obok innego tekstu na konsoli.
  11. Zmień rozmiar wektora, aby zawierał tylko 5 elementów.
  12. Wydrukuj nowy rozmiar wektora wraz z innym tekstem.
  13. Sprawdź, czy wektor nie jest pusty.
  14. Wydrukuj tekst na konsoli, jeśli wektor nie jest pusty.
  15. Użyj instrukcji else, aby określić, co zrobić, jeśli wektor jest pusty.
  16. Tekst do wydrukowania na konsoli, jeśli wektor jest pusty.
  17. Program musi zwrócić wartość po pomyślnym zakończeniu.
  18. Koniec treści funkcji main().

FAQ

Wektor to dynamiczna tablica, która automatycznie zmienia rozmiar i zna swój rozmiar, podczas gdy tablica wbudowana ma stałą długość ustawianą w momencie kompilacji. Wektory zarządzają pamięcią za Ciebie; surowe tablice tego nie robią.

Użyj operatora indeksu dolnego, takiego jak nums[0], aby uzyskać szybki, bezpośredni dostęp. Funkcja członkowska at(), podobnie jak nums.at(0), robi to samo, ale zgłasza wyjątek out_of_range, gdy indeks jest nieprawidłowy, co zwiększa bezpieczeństwo.

Zadeklaruj wektor, którego elementy są same w sobie wektorami, na przykład wektor > siatka. Możesz zmieniać jej rozmiar za pomocą konstruktorów lub wierszy push_back. Każdy wektor wewnętrzny może rosnąć niezależnie, dając elastyczną macierz o zmiennym rozmiarze.

Wektor przechowuje elementy w ciągłej pamięci z szybkim, swobodnym dostępem, podczas gdy std::list to lista dwukierunkowa z szybkim wstawianiem i usuwaniem elementów w dowolnym miejscu, ale bez bezpośredniego indeksowania. Wybierz w oparciu o swój wzorzec dostępu.

Dołącz nagłówek algorytmu i wywołaj std::sort z iteratorami begin i end, jak w sort(nums.begin(), nums.end()). Sortowanie domyślnie odbywa się rosnąco; przekaż niestandardowy komparator lub wyższy. () aby sortować w kolejności malejącej.

Tak. Wektor jest szablonem i może zawierać dowolny typ, w tym ciąg znaków, klasy niestandardowe, a nawet inne wektory. Zadeklaruj typ elementu w nawiasach kątowych, np. „wektor”. lub wektor .

Tak. Asystenci kodowania AI przekształcają krótki monit lub komentarz w działający kod wektorowy, obejmujący deklarację, pętle push_back i iterację. Zawsze sprawdzaj sugerowane typy, ograniczenia i obsługę pojemności, ponieważ AI może nie uwzględnić wymagań specyficznych dla projektu.

Tak. Drugi pilot GitHub Sugeruje deklaracje wektorów, wywołania push_back i insert oraz pętle iteratora podczas pisania. Dobrze radzi sobie z powtarzalnymi kodami, choć nadal należy zweryfikować indeksy, zmiany rozmiaru i logikę przed kompilacją.

Podsumuj ten post następująco: