C ++ Zmień rozmiar tablicy

C ++ Zmień rozmiar tablicy
Po przydzieleniu tablicy nie ma wbudowanego mechanizmu rozmiaru jej w języku programowania C ++. Dlatego możemy uniknąć tego problemu, dynamiczne generowanie nowej tablicy, kopiowanie treści, a następnie usuwanie starej tablicy. W tym artykule koncentruje się na tym, jak dynamicznie alokować pamięć w tablicy i dostosowywać rozmiar tablicy w oparciu o dane wejściowe użytkownika. Jest to bardzo ważna strategia w programowaniu, ponieważ zapewnia skuteczne wykorzystanie pamięci. Kiedy próbujemy wstawić nowy element do tablicy dynamicznej, automatycznie wzrasta, aż nie będzie więcej miejsca na nowy element. Zazwyczaj region podwaja wielkość.

Co to jest dynamiczna tablica?

Dynamiczna tablica jest identyczna z standardową tablicą, ale jej rozmiar można zmienić podczas uruchomienia kodu. Dynamiczne elementy tablicy zajmują ciągły blok pamięci. Po zdefiniowaniu tablicy nie można zmodyfikować jej rozmiaru. Natomiast tablica dynamiczna nie jest jak tablica statyczna. Nawet po jego zajęciu, dynamiczna tablica może rozszerzyć swój rozmiar. Elementy można stale dodawać w pozycji końcowej tablicy dynamicznej, wykorzystując przestrzeń zarezerwowaną, dopóki nie zostanie całkowicie zajęta.

Kluczowe czynniki tablicy dynamicznej w C ++:

Wydajność tablicy zależy od jej rozmiaru i współczynnika wzrostu. Zwróć uwagę na następujące punkty:

  • Jeśli tablica jest niewielka i ma wolniejszy współczynnik wzrostu, będzie nadal częściej realokować pamięć. W rezultacie wyniki tablicy ucierpi.
  • Jeśli tablica jest większa i ma wysoki współczynnik wzrostu, będzie miała dużą ilość nieużywanej pamięci. W rezultacie procesy rozmiaru mogą trwać dłużej. W rezultacie wyniki tablicy również ucierpią

Przykład 1:

Nowe słowo kluczowe służy do budowy tablicy dynamicznej w następującym programie C ++. Następnie słowo kluczowe zwraca odniesienie do pierwszego elementu. Sekcja nagłówka ma dołączony plik biblioteki iostream, aby używać jego metod. Uwzględniono również plik przestrzeni nazw, który umożliwia korzystanie z swojej klasy bez wywołania. Następnie wywoływano główną funkcję, w której zadeklarowaliśmy dwie zmienne „P” i „Num” typu danych całkowitowych.

W następnym kroku instrukcja Cout drukuje instrukcję „Wprowadź liczby”. Polecenie CIN pobiera dane wejściowe od użytkownika i przydziela je do zmiennej „NUM”. Następny krok ma zmienną wskaźnika „tablica”, która zawiera wartości liczb całkowitych zmiennej „NUM”. Wprowadzony przez użytkownika numer zostanie wydrukowany za pomocą polecenia Cout. Następnie mamy dla stanu pętli który iteruje każdy element wprowadzony przez użytkownika. Tablica jako „tablica” jest zadeklarowana w poleceniu CIN, która odczytuje wejście wprowadzone przez użytkownika.

Po zakończeniu pętli instrukcja „Twoje liczby są” będzie wydrukować na ekranie konsoli. Znowu mamy dla stanu pętli Ale tym razem to dla stanu pętli itera nad szeregiem elementów. Zauważ, że pozwoliliśmy użytkownikowi ustawić rozmiar tablicy. W rezultacie rozmiar tablicy jest zdefiniowany w czasie wykonywania.

#włączać
za pomocą przestrzeni nazw Std;
int main ()
int p, num;
Cout<< "Enter the numbers:" num;
int *array = new int (num);
Cout<< "Enter " << num << " numbers" <for (p = 0; p> tablica [p];

Cout<< "Your numbers are: ";
dla (p = 0; p < num; p++)
Cout<< Array[p] << " ";

Cout<< "\n ";
powrót 0;

Użytkownik jest poproszony o wprowadzenie numeru w wierszu konsoli. Po wejściu liczba rozmiarów tablicy wyświetla liczby określonego rozmiaru tablicy. Powstała tablica jest wyświetlana na montorze konsoli Ubuntu.

Przykład 2:

Do ustawienia tablicy dynamicznej można użyć listy inicjalizacyjnej. Zilustrujmy to przykładem, aby zobaczyć, jak to działa. Najpierw dodaliśmy plik iostream i plik przestrzeni nazw STD w sekcji nagłówka. Następnie powołaliśmy się do głównej funkcji. Logika programu powinna być zawarta w ciele funkcji. Następnie zdefiniowaliśmy zmienną jako „a” typu danych całkowitowych.

Po ogłoszeniu zmiennej liczb całkowitych mamy dynamiczną deklarację tablicy jako „ARR”, która korzysta z listy inicjalizacyjnej. W tablicy mamy cztery wpisy całkowite. Polecenie Cout wydrukuje instrukcję „elementy tablicy” przed wyświetleniem elementów tablicy.

W następnym kroku mamy A dla pętli który itera nad elementami obecnymi w określonej tablicy. Za pośrednictwem polecenia COUT elementy danej tablicy zostaną wydrukowane na podpowiedzi konsoli.

#włączać
za pomocą przestrzeni nazw Std;
int main (void)
int a;
int *arr new int [4] 9, 23, 1, 17;
Cout<< "Elements of Array: " <dla (a = 0; a < 4; a++)
Cout<
powrót 0;

Poniżej znajduje się wynik, który otrzymaliśmy z powyższego wykonania programu:

Przykład 3:

Po osiągnięciu celu tablicy dynamicznej należy ją usunąć z pamięci komputera. Wyrażenie usuwania można użyć do tego, że przestrzeń pamięci jest bezpłatna i używana do przechowywania dodatkowych danych. Musimy użyć delete [], aby usunąć tablicę dynamiczną z pamięci systemu. Square Bracket [] z słowem kluczowym usuwa polecenia procesora, aby usunąć wiele zmiennych, a nie tylko jedną.

Rozpocznijmy wdrażanie programu. Zaimportowaliśmy wymagany plik w sekcji nagłówka. Następnie nazywana jest główna funkcja. Zmienne całkowite „i” i „nie” są zadeklarowane w głównej funkcji. Po zdefiniowaniu tych zmiennych mamy instrukcję Cout „Numer wejściowy”, który jest dla użytkownika wprowadzenie numeru. Otrzymujemy numer od użytkownika i zapisujemy go w zmiennej „nie” za pomocą polecenia CIN.

Następnie zadeklaruj zmienną wskaźnika „Myarr”, która przechowuje liczby całkowite w pamięci. Liczba wprowadzona przez użytkownika zostanie wydrukowana w drugiej komendzie Cout tego programu. dla pętli Instrukcja jest wykorzystywana do iteracji nad numerem wprowadzonym przez użytkownika. Ostatecznie skonstruowaliśmy instrukcję Delete [], która usuwa tablicę podaną w programie i uwalnia przestrzeń w pamięci.

#włączać
za pomocą przestrzeni nazw Std;
int main ()
Int I, nie;
Cout<< "Input Number:" no;
int *myarr = new int (no);
Cout<< "Input " << no << " numbers" <for (i = 0; i> myarr [i];

Cout<< "Input numbers are: ";
dla (i = 0; i< no; i++)
Cout<
Cout<Usuń [] myarr;
powrót 0;

Po wykonaniu programu otrzymaliśmy następujące dane wyjściowe. Po zakończeniu programu tablica zostanie usunięta.

Przykład 4:

Możemy dynamicznie zdefiniować tablicę wskaźnika rozmiaru „x”, a następnie dynamicznie przydzielić pamięć wielkości „y”. Początkowo zdefiniowaliśmy matrycę w sekcji nagłówka. W następnym kroku mamy główną funkcję, w której mamy zmienną wskaźnika „ARR”. Zmienna wskaźnika zawiera tablicę rozmiaru „x”.

Teraz dla instrukcji pętli Przydzielą każdy wiersz rozmiar pamięci „Y”. Następnie mamy zagnieżdżoną pętlę do dynamicznego przypisywania wartości do przydzielonej pamięci. Funkcja RAND wygeneruje liczbę losową dla tablicy 2D. W następnej zagnieżdżonej pętli wydrukowaliśmy tablicę 2D przez oświadczenie STD :: Cout. Po zakończeniu programu określona tablica 2D zostanie usunięta z przydzielonej przestrzeni pamięci, ponieważ w końcu użyliśmy Delete [].

#włączać
#definicja x 3
#definicja y 4
int main ()

int ** arr = new int*[x];
dla (int i = 0; i< X; i++)
arr [i] = new int [y];

dla (int i = 0; i< X; i++)

for (int j = 0; j < Y; j++)
arr [i] [j] = rand () % 10;


dla (int i = 0; i< X; i++)

for (int j = 0; j < Y; j++)
STD :: Cout<
STD :: Cout<< std::endl;

dla (int i = 0; i< X; i++)
usuń [] arr [i];

Usuń [] arr;
powrót 0;

Tablica 2D została wygenerowana i pokazana na ekranie konsoli poniżej.

Wniosek

To o rozmiarze tablicy w C++. Dowiedzieliśmy się, że tablice C ++ nie mają wbudowanej metody zmiany rozmiaru. Ale poprzez dynamiczną alokacja tablicy w C ++ rozmiar tablicy można zmodyfikować. Zilustrowaliśmy w przykładzie, aby zmienić rozmiar tablicy dynamicznej za pomocą nowego słowa kluczowego. Możemy również użyć listy inicjalizacyjnej do zainicjowania tablicy. Po zmianie rozmiaru możemy również zwolnić miejsce w pamięci za pomocą Delete []. W tym artykule pokaże, jak zmienić rozmiar tablicy w C++.