Wektory w C++ to dynamiczne tablice dostarczane przez Standardową Bibliotekę Szablonów (STL). Pozwalają one na przechowywanie sekwencji elementów, które mogą być łatwo rozszerzane lub zmniejszane. Wektory są bardziej elastyczne niż statyczne tablice, ponieważ ich rozmiar może zmieniać się w czasie wykonania programu.
Właściwości:
- Dynamiczny rozmiar: Automatycznie zarządzają pamięcią, dostosowując swój rozmiar do potrzeb.
- Dostęp do elementów: Zapewniają szybki dostęp do swoich elementów poprzez indeksowanie.
- Elastyczność: Umożliwiają dodawanie i usuwanie elementów.
- Iteracja: Można po nich iterować za pomocą iteratorów podobnie jak po innych kontenerach STL.
- Efektywność: Oferują dobre kompromisy między szybkością dostępu do elementów a elastycznością zarządzania pamięcią.
Podstawowe metody:
push_back(const T& value)
– dodaje element na końcu wektora.
std::vector<int> v;
v.push_back(10);
v.push_back(20);
pop_back()
– usuwa ostatni element wektora.
v.pop_back(); // Usuwa 20
size()
– zwraca liczbę elementów w wektorze.
std::cout << "Rozmiar: " << v.size() << std::endl;
empty()
– zwraca
true
jeśli wektor jest pusty.
if(v.empty()) {
std::cout << "Wektor jest pusty." << std::endl;
}
resize(size_t n)
– zmienia rozmiar wektora na
n
, dodając elementy domyślne lub usuwając nadmiarowe elementy.
v.resize(5); // Rozmiar teraz to 5, dodane elementy mają wartość 0
clear()
– usuwa wszystkie elementy z wektora.
at(size_t n)
– daje dostęp do elementu na pozycji
n
z kontrolą zakresu.
int x = v.at(1); // Rzuca std::out_of_range jeśli n >= v.size()
[ ]
– operator indeksowania, daje dostęp do elementu na pozycji
n
bez kontroli zakresu.
front()
i
back()
– zwracają odpowiednio pierwszy i ostatni element wektora.
int first = v.front();
int last = v.back();
insert(iterator position, const T& value)
– wstawia
value
na pozycji określonej przez iterator
position
.
v.insert(v.begin(), 5); // Wstawia 5 na początku wektora
erase(iterator position)
lub
erase(iterator first, iterator last)
– usuwa element(y) z wektora.
erase(iterator position) lub erase(iterator first, iterator last) - usuwa element(y) z wektora.
Przykład użycia wektora:
#include <iostream>
#include <vector>
int main() {
std::vector<int> vec; // Deklaracja wektora liczb całkowitych
// Dodawanie elementów
vec.push_back(1);
vec.push_back(2);
vec.push_back(3);
// Dostęp do elementów i ich modyfikacja
std::cout << "Pierwszy element: " << vec[0] << std::endl;
vec[0] = 10;
// Iteracja przez wektor
std::cout << "Elementy wektora: ";
for(int i = 0; i < vec.size(); i++) {
std::cout << vec[i] << " ";
}
std::cout << std::endl;
// Usuwanie elementów
vec.pop_back(); // Usuwa ostatni element
// Sprawdzenie, czy wektor jest pusty
if(vec.empty()) {
std::cout << "Wektor jest pusty." << std::endl;
} else {
std::cout << "Wektor nie jest pusty." << std::endl;
}
return 0;
}
Wektory są niezwykle użytecznym i wszechstronnym narzędziem w C++, które sprawdza się w wielu scenariuszach programistycznych, od prostych list po złożone struktury danych.