Podstawy std::vector: push_back, size, capacity
Twórz, powiększaj i analizuj wektory oraz poznaj różnicę między capacity a size
Podstawy std::vector: push_back, size, capacity to bezpłatna lekcja C++ Academy na CoddyKit. To lekcja 1 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej C++ Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs C++ Academy zawiera 4 lekcji w sumie.
Dlaczego std::vector?
std::vector jest domyślnym kontenerem w C++. Rośnie automatycznie, zarządza pamięcią za Ciebie i zapewnia dostęp losowy w czasie O(1). Używaj go, chyba że masz konkretny powód, aby tego nie robić.
Dołączanie i deklarowanie
Dołącz <vector> i zadeklaruj wektor, podając typ elementów jako parametr szablonu.
#include <vector>
std::vector<int> nums;
std::vector<std::string> names = {"Ada", "Bob"};Sposoby inicjalizacji
Wektor można zainicjalizować na kilka sposobów:
std::vector<int> a; // empty
std::vector<int> b(5); // 5 zeros
std::vector<int> c(5, 42); // 5 copies of 42
std::vector<int> d{1, 2, 3}; // {1,2,3}
std::vector<int> e(d); // copy of dpush_back: dodawanie na końcu
Dodaj element na końcu za pomocą push_back. Zamortyzowany czas działania wynosi O(1).
std::vector<int> v;
v.push_back(10);
v.push_back(20);
v.push_back(30);emplace_back: konstruowanie w miejscu
emplace_back przekazuje swoje argumenty do konstruktora elementu — nie powstaje obiekt tymczasowy. W przypadku typów nietrywialnych jest to nieco szybsze.
std::vector<std::pair<int,int>> v;
v.emplace_back(1, 2); // constructs a pair in placesize a capacity
To dwa różne pojęcia:
- size — liczba obecnie przechowywanych elementów
- capacity — liczba elementów, które pamięć może pomieścić bez realokacji
Pojemność rośnie skokowo, zwykle się podwajając.
Sprawdzanie size i capacity
Użyj odpowiednich funkcji składowych:
std::vector<int> v;
for (int i = 0; i < 10; ++i) {
v.push_back(i);
std::cout << "size=" << v.size() << " capacity=" << v.capacity() << "\n";
}reserve: wstępna alokacja pojemności
Jeśli wiesz, ile elementów dodasz, najpierw wywołaj reserve, aby uniknąć wielokrotnych realokacji.
std::vector<int> v;
v.reserve(1000000); // preallocate
for (int i = 0; i < 1000000; ++i) v.push_back(i);shrink_to_fit: zwalnianie pamięci
Po usunięciu wielu elementów zwolnij niewykorzystaną pojemność za pomocą shrink_to_fit. To żądanie nie jest wiążące — implementacja może zachować dodatkowe miejsce.
Dostęp do elementów
Cztery sposoby:
v[i]— bez sprawdzania zakresuv.at(i)— ze sprawdzaniem zakresu, zgłasza wyjątekv.front()— pierwszy elementv.back()— ostatni element
Pusty wektor i clear
Sprawdź, czy wektor jest pusty, za pomocą empty(). Usuń wszystkie elementy za pomocą clear() — pojemność pozostaje bez zmian.
Szybkie sprawdzenie
Dlaczego czas działania push_back wynosi zamortyzowane O(1)?
Podsumowanie
std::vector to dynamicznie rosnąca tablica zapewniająca dostęp losowy w czasie O(1). size() oznacza liczbę elementów, a capacity() — rozmiar przydzielonej pamięci. reserve() pozwala uniknąć realokacji, gdy znany jest docelowy rozmiar.
Często zadawane pytania
Czy lekcja „Podstawy std::vector: push_back, size, capacity” jest bezpłatna?
Tak — pełny tekst „Podstawy std::vector: push_back, size, capacity” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu C++ Academy, przejdź na CoddyKit PRO. Kurs C++ Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Podstawy std::vector: push_back, size, capacity”?
Twórz, powiększaj i analizuj wektory oraz poznaj różnicę między capacity a size Ćwiczysz C++ Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć C++ Academy?
Nie wymagamy żadnego doświadczenia. C++ Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 1 z 4.
Ile czasu zajmuje lekcja „Podstawy std::vector: push_back, size, capacity”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji C++ Academy?
Tak. Każda lekcja C++ Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Podstawy std::vector: push_back, size, capacity
- Iterowanie po wektorach: indeksy, range-for, iteratory
- Modyfikowanie wektorów: insert, erase, clear
- Vector a std::array i tablica C