0Pricing
C++ Academy · Lekcja

Modyfikowanie wektorów: insert, erase, clear

Wstawiaj, usuwaj i czyść elementy, pamiętając o zasadach unieważniania iteratorów

Modyfikowanie wektorów: insert, erase, clear to bezpłatna lekcja C++ Academy na CoddyKit. To lekcja 3 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.

Wstawianie na końcu

Najszybsze wstawianie zapewniają push_back i emplace_back — obie funkcje dodają element na końcu w zamortyzowanym czasie O(1).

Wstawianie w dowolnej pozycji

insert(pos, value) przesuwa w prawo wszystkie elementy znajdujące się za pos. Jest to operacja O(n).

std::vector<int> v = {1, 2, 4, 5};
v.insert(v.begin() + 2, 3);   // {1, 2, 3, 4, 5}

Wstawianie zakresu

Wstaw wszystkie elementy z innego kontenera jednocześnie.

std::vector<int> v = {1, 5};
std::vector<int> mid = {2, 3, 4};
v.insert(v.begin() + 1, mid.begin(), mid.end());
// {1, 2, 3, 4, 5}

Wstawianie wielu kopii

Wstaw n kopii tej samej wartości.

std::vector<int> v = {1, 4};
v.insert(v.begin() + 1, 2, 99);   // {1, 99, 99, 4}

Usuwanie jednego elementu

erase(pos) usuwa element wskazywany przez iterator i przesuwa w lewo wszystkie znajdujące się za nim elementy. Zwraca iterator do następnego elementu.

std::vector<int> v = {1, 2, 3, 4};
v.erase(v.begin() + 1);   // {1, 3, 4}

Usuwanie zakresu

Usuń wszystkie elementy z półotwartego zakresu [first, last).

v.erase(v.begin() + 1, v.begin() + 3);

Idiom erase-remove

Aby usunąć wszystkie elementy spełniające predykat bez pozostawiania luk, połącz std::remove_if i erase.

#include <algorithm>
v.erase(
    std::remove_if(v.begin(), v.end(), [](int x) { return x < 0; }),
    v.end()
);

C++20 std::erase i std::erase_if

W C++20 dodano wolne funkcje, które opakowują idiom erase-remove.

std::erase(v, 0);                    // remove all 0s
std::erase_if(v, [](int x) { return x < 0; });

clear: usuwanie wszystkich elementów

clear() usuwa wszystkie elementy, ale zachowuje pojemność. Jest to przydatne, gdy planujesz ponownie wypełnić wektor.

pop_back: usuwanie ostatniego elementu

Usunięcie ostatniego elementu w czasie O(1). Funkcja nie zwraca wartości — jeśli jej potrzebujesz, pobierz ją wcześniej.

int last = v.back();
v.pop_back();

Zasady unieważniania iteratorów

insert i erase unieważniają każdy iterator od zmodyfikowanej pozycji włącznie. erase zwraca następny prawidłowy iterator, dzięki czemu można kontynuować iterację.

Szybkie sprawdzenie

Co funkcja std::remove_if robi z wektorem, gdy zostanie użyta samodzielnie?

Podsumowanie

insert i erase działają w dowolnych pozycjach w czasie O(n). Używaj push_back/pop_back, aby wykonywać operacje na końcu w czasie O(1). Stosuj idiom erase-remove (lub std::erase_if z C++20) do usuwania pasujących elementów.

Często zadawane pytania

Czy lekcja „Modyfikowanie wektorów: insert, erase, clear” jest bezpłatna?

Tak — pełny tekst „Modyfikowanie wektorów: insert, erase, clear” 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 „Modyfikowanie wektorów: insert, erase, clear”?

Wstawiaj, usuwaj i czyść elementy, pamiętając o zasadach unieważniania iteratorów Ć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 3 z 4.

Ile czasu zajmuje lekcja „Modyfikowanie wektorów: insert, erase, clear”?

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