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 tablicyTa lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wyzwanie
ŁatwyMają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++
2Wskaźniki i referencje
Wskaźniki jako parametryReferencje - &Referencje jako parametryWskaźniki a referencje3Dynamiczna alokacja pamięci
Operatory new i deleteWycieki pamięciTablica dynamicznaTablica dynamiczna — wstawianiePoćwicz samodzielnie: Kompilator C++ online