Menu
Coddy logo textTech

Tablica dynamiczna — wstawianie

Lekcja 14 z 14 w kursie Wskaźniki w C++ w Coddy.

Na koniec warto wiedzieć, jak dynamicznie dodać element do tablicy. Jeśli nie możesz użyć wektora, a twoja tablica jest już pełna, musisz znaleźć sposób na dynamiczną zmianę jej długości i dodanie wybranego elementu

Oto mały przykład pokazujący, jak możemy dynamicznie zmienić tablicę i sprawić, by działała tak, jakby była vector

  • Mamy początkową tablicę zaalokowaną dynamicznie
  • Tworzymy nową tablicę zaalokowaną dynamicznie o długości większej o 1
  • Kopiujemy wszystkie elementy ze starej tablicy do nowej
  • Pod ostatnim indeksem (tym +1) dodajemy wybrany element
  • Usuwamy starą tablicę
  • I ustawiamy wskaźnik do usuniętej starej tablicy tak, aby wskazywał na nową, zmodyfikowaną tablicę
  • Na koniec programu ponownie usuwamy wskaźnik do tablicy
int *array = new int[5]; // Tablica początkowa
for(int i = 0; i < 5; i++)
    array[i] = i + 1;
    
int *newarray = new int[6]; // Nowa tablica o długości większej o +1

for(int i = 0; i < 5; i++)
    newarray[i] = array[i]; // Skopiuj wszystkie elementy
newarray[5] = 6; // Dodaj ostatni element

delete[] array; // Zwolnij pamięć starej tablicy
array = newarray; // Ustaw wskaźnik tak, aby wskazywał na nową tablicę

for(int i = 0; i < 5; i++)
    cout << array[i] << " ";
    
delete[] array; // Zwolnij pamięć nowej tablicy
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

challenge icon

Wyzwanie

Łatwy

Mając tablicę zaalokowaną dynamicznie, nie zmieniaj domyślnego kodu. W środku dodaj kod, który wczyta 3 liczby i doda je na końcu tablicy, tak jak w przykładzie z lekcji.

Nie zmieniaj domyślnego kodu

Spróbuj swoich sił

#include <iostream>

using namespace std;

int main() {

    int *numbers = new int[5];
    for(int i = 0; i < 5; i++)
        numbers[i] = i + 1;
    // NIE ZMIENIAJ KODU POWYŻEJ


    // Wpisz tutaj swój kod

    // Wczytaj 3 liczby całkowite

    // Dodaj je dynamicznie do tablicy "numbers"


    // NIE ZMIENIAJ KODU PONIŻEJ
    for(int i = 0; i < 8; i++)
        cout << numbers[i] << " ";
    delete[] numbers;

    return 0;
}

Wszystkie lekcje w sekcji Wskaźniki w C++

Poćwicz samodzielnie: Kompilator C++ online