0Pricing
C++ Academy · Lekcja

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 d

push_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 place

size 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 zakresu
  • v.at(i) — ze sprawdzaniem zakresu, zgłasza wyjątek
  • v.front() — pierwszy element
  • v.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

  1. Podstawy std::vector: push_back, size, capacity
  2. Iterowanie po wektorach: indeksy, range-for, iteratory
  3. Modyfikowanie wektorów: insert, erase, clear
  4. Vector a std::array i tablica C
← Powrót do C++ Academy