Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Industrial programming >> Bahasa C

C++ Alokasi Dinamis Array dengan Contoh

Apa itu Array Dinamis?

Array dinamis sangat mirip dengan array biasa, tetapi ukurannya dapat dimodifikasi selama runtime program. Elemen DynamArray menempati blok memori yang berdekatan.

Setelah array dibuat, ukurannya tidak dapat diubah. Namun, array dinamis berbeda. Array dinamis dapat memperluas ukurannya bahkan setelah diisi.

Selama pembuatan array, itu dialokasikan jumlah memori yang telah ditentukan. Ini tidak terjadi pada larik dinamis karena ia memperbesar ukuran memorinya dengan faktor tertentu saat dibutuhkan.

Dalam tutorial C++ ini, Anda akan belajar

Faktor yang memengaruhi kinerja Array Dinamis

Ukuran awal larik dan faktor pertumbuhannya menentukan kinerjanya. Perhatikan poin-poin berikut:

  1. Jika sebuah array memiliki ukuran kecil dan faktor pertumbuhan kecil, array akan terus mengalokasikan memori lebih sering. Ini akan mengurangi kinerja larik.
  2. Jika sebuah array memiliki ukuran yang besar dan faktor pertumbuhan yang besar, maka array tersebut akan memiliki banyak memori yang tidak terpakai. Karena itu, operasi pengubahan ukuran mungkin memakan waktu lebih lama. Ini akan mengurangi kinerja larik.

Kata Kunci baru

Di C++, kita dapat membuat array dinamis menggunakan kata kunci new. Jumlah item yang akan dialokasikan ditentukan dalam sepasang tanda kurung siku. Nama jenis harus mendahului ini. Jumlah item yang diminta akan dialokasikan.

Sintaks:

Kata kunci baru menggunakan sintaks berikut:

pointer_variable = new data_type;

Pointer_variable adalah nama dari variabel pointer.

Tipe_data harus berupa tipe data C++ yang valid.

Kata kunci kemudian mengembalikan pointer ke item pertama. Setelah membuat array dinamis, kita dapat menghapusnya menggunakan kata kunci delete.

Contoh 1:

#include<iostream>
using namespace std;
int main() {
	int x, n;
	cout << "Enter the number of items:" << "\n";
	cin >>n;
	int *arr = new int(n);
	cout << "Enter " << n << " items" << endl;
	for (x = 0; x < n; x++) {
		cin >> arr[x];
	}
	cout << "You entered: ";
	for (x = 0; x < n; x++) {
		cout << arr[x] << " ";
	}
	return 0;
}


Keluaran:

Berikut adalah screenshot kodenya:

Penjelasan Kode:

  1. Sertakan file header iostream ke dalam program kami untuk menggunakan fungsinya.
  2. Sertakan namespace std dalam program kami untuk menggunakan kelasnya tanpa memanggilnya.
  3. Panggil fungsi main(). Logika program harus ditambahkan di dalam isi fungsi.
  4. Deklarasikan dua variabel integer x dan n.
  5. Cetak beberapa teks di konsol yang meminta pengguna untuk memasukkan nilai variabel n.
  6. Baca input pengguna dari keyboard dan tetapkan ke variabel n.
  7. Deklarasikan array untuk menampung total n bilangan bulat dan menetapkannya ke variabel pointer *arr.
  8. Cetak pesan yang meminta pengguna untuk memasukkan n jumlah item.
  9. Gunakan for loop untuk membuat variabel loop x untuk mengulangi item yang dimasukkan oleh pengguna.
  10. Baca elemen yang dimasukkan oleh pengguna dan simpan dalam array arr.
  11. Akhir dari badan for loop.
  12. Cetak beberapa teks di konsol.
  13. Gunakan perulangan for untuk membuat variabel perulangan x untuk mengulangi item-item larik.
  14. Cetak nilai yang terkandung dalam larik bernama arr di konsol.
  15. Akhir dari badan for loop.
  16. Program harus mengembalikan nilai setelah berhasil diselesaikan.
  17. Akhir dari isi fungsi main().

CATATAN:Dalam contoh di atas, pengguna diizinkan untuk menentukan ukuran apa pun untuk larik selama waktu berjalan. Ini berarti ukuran array ditentukan selama runtime .

Menginisialisasi array yang dialokasikan secara dinamis

Sangat mudah untuk menginisialisasi array dinamis ke 0.

Sintaks:

int *array{ new int[length]{} };

Dalam sintaks di atas, panjang menunjukkan jumlah elemen yang akan ditambahkan ke array. Karena kita perlu menginisialisasi array ke 0, ini harus dibiarkan kosong.

Kita dapat menginisialisasi array dinamis menggunakan daftar penginisialisasi. Mari kita buat contoh yang menunjukkan hal ini.

Contoh 2:

#include <iostream>
using namespace std;

int main(void) {

	int x; 

	int *array{ new int[5]{ 10, 7, 15, 3, 11 } };

	cout << "Array elements: " << endl;

	for (x = 0; x < 5; x++) {

		cout << array[x] << endl;
	}

	return 0;
}

Keluaran:

Berikut adalah screenshot kodenya:

Penjelasan Kode:

  1. Sertakan file header iostream ke dalam program kami untuk menggunakan fungsinya.
  2. Sertakan ruang nama std dalam program kami untuk menggunakan kelasnya tanpa memanggilnya.
  3. Panggil fungsi main(). Logika program harus ditambahkan di dalam isi fungsi.
  4. Deklarasikan variabel integer bernama x.
  5. Deklarasikan array dinamis bernama array menggunakan daftar penginisialisasi. Array akan menampung 5 elemen integer. Perhatikan bahwa kita tidak menggunakan operator “=” antara panjang larik dan daftar penginisialisasi.
  6. Cetak beberapa teks di konsol. Endl adalah kata kunci C++ yang berarti garis akhir. Ini memindahkan kursor ke kalimat berikutnya.
  7. Gunakan for loop untuk mengulangi elemen array.
  8. Cetak isi larik bernama larik di konsol.
  9. Akhir dari badan for loop.
  10. Program harus mengembalikan nilai setelah berhasil diselesaikan.
  11. Akhir dari isi fungsi main().

Mengubah Ukuran Array

Panjang array dinamis diatur selama waktu alokasi.

Namun, C++ tidak memiliki mekanisme bawaan untuk mengubah ukuran array setelah dialokasikan.

Namun, Anda dapat mengatasi tantangan ini dengan mengalokasikan larik baru secara dinamis, menyalin elemen, lalu menghapus larik lama.

Catatan:bahwa teknik ini rentan terhadap kesalahan, oleh karena itu, cobalah untuk menghindarinya.

Menghapus Array Secara Dinamis

Array dinamis harus dihapus dari memori komputer setelah tujuannya terpenuhi. Pernyataan hapus dapat membantu Anda mencapai hal ini. Ruang memori yang dibebaskan kemudian dapat digunakan untuk menyimpan kumpulan data lainnya. Namun, bahkan jika Anda tidak menghapus larik dinamis dari memori komputer, larik tersebut akan dihapus secara otomatis setelah program dihentikan.

Catatan:

Untuk menghapus larik dinamis dari memori komputer, Anda harus menggunakan delete[], bukan delete. [] menginstruksikan CPU untuk menghapus beberapa variabel daripada satu variabel. Penggunaan delete alih-alih delete[] ketika berhadapan dengan array dinamis dapat mengakibatkan masalah. Contoh masalah tersebut termasuk kebocoran memori, kerusakan data, kerusakan, dll.

Contoh 3:

#include<iostream>
using namespace std;
int main() {
	int x, n;
	cout << "How many numbers will you type?" << "\n";
	cin >>n;
	int *arr = new int(n);
	cout << "Enter " << n << " numbers" << endl;
	for (x = 0; x < n; x++) {
		cin >> arr[x];
	}
	cout << "You typed: ";
	for (x = 0; x < n; x++) {
		cout << arr[x] << " ";
	}
	cout << endl;
	delete [] arr;
	return 0;
}

Keluaran:

Berikut adalah screenshot kodenya:

Penjelasan Kode:

  1. Sertakan file header iostream dalam program kami untuk menggunakan fungsinya.
  2. Sertakan namespace std dalam program kami untuk menggunakan kelasnya tanpa memanggilnya.
  3. Panggil fungsi main(). Logika program harus ditambahkan di dalam isi fungsi.
  4. Deklarasikan dua variabel x dan n dari tipe data integer.
  5. Cetak beberapa teks di konsol. Teks akan meminta pengguna untuk menyebutkan jumlah angka yang akan mereka masukkan.
  6. Baca masukan pengguna dari keyboard. Nilai input akan diberikan ke variabel n.
  7. Deklarasikan variabel pointer *arr. Array arr akan mencadangkan beberapa memori untuk menyimpan total n bilangan bulat.
  8. Cetak pesan di konsol yang meminta pengguna memasukkan n angka.
  9. Buat loop for dan variabel loop x untuk mengulangi angka yang dimasukkan oleh pengguna.
  10. Baca angka yang dimasukkan oleh pengguna dan simpan dalam array arr.
  11. Akhir dari badan for loop.
  12. Cetak beberapa teks di konsol.
  13. Gunakan for loop dan variabel loop x untuk mengulang isi array arr.
  14. Cetak nilai array arr di konsol.
  15. Akhir dari badan for loop.
  16. Cetak baris kosong di konsol.
  17. Kosongkan memori array arr.
  18. Program akan mengembalikan nilai jika berhasil diselesaikan.
  19. Akhir dari isi fungsi main().

Ringkasan:


Bahasa C

  1. C# Array
  2. Melewati Array ke Fungsi dalam Pemrograman C++
  3. C Alokasi Memori Dinamis
  4. Array di C++ | Nyatakan | Inisialisasi | Contoh Pointer ke Array
  5. Operator di C++ dengan Contoh:Apa itu, Jenis dan Program
  6. C++ Switch Case Statement dengan CONTOH
  7. Struktur C++ Dengan Contoh
  8. std::daftar di C++ dengan Contoh
  9. Perbedaan antara Struktur dan Kelas:Dijelaskan dengan Contoh C++
  10. Sortir Seleksi dalam Program Java dengan Contoh