Std :: list di C ++ dengan Contoh

Daftar Isi:

Anonim

Apa itu std :: list?

Di C ++, std :: list merujuk ke wadah penyimpanan. Daftar std: memungkinkan Anda memasukkan dan menghapus item dari mana saja. Std :: list diimplementasikan sebagai daftar tertaut ganda. Ini berarti data daftar dapat diakses dua arah dan berurutan.

Daftar Pustaka Template Standar tidak mendukung akses acak cepat, tetapi mendukung akses berurutan dari semua arah.

Anda dapat menyebarkan elemen daftar di potongan memori yang berbeda. Informasi yang diperlukan untuk akses berurutan ke data disimpan dalam wadah. Std :: list bisa meluas dan menyusut dari kedua ujungnya sesuai kebutuhan selama runtime. Pengalokasi internal secara otomatis memenuhi persyaratan penyimpanan.

Dalam tutorial C ++ ini, Anda akan mempelajari:

  • Apa itu std :: list?
  • Mengapa menggunakan std :: list?
  • Daftar Sintaks
  • Fungsi Daftar C ++
  • Pembuat
  • Properti penampung
  • Memasukkan ke dalam Daftar
  • Menghapus dari Daftar

Mengapa menggunakan std :: list?

Berikut, alasan menggunakan std :: List:

  • Std :: list lebih baik dibandingkan dengan kontainer urutan lain seperti array dan vektor.
  • Mereka memiliki kinerja yang lebih baik dalam memasukkan, memindahkan, dan mengekstrak elemen dari posisi mana pun.
  • Std :: list juga bekerja lebih baik dengan algoritme yang melakukan operasi seperti itu secara intensif.

Daftar Sintaks

Untuk mendefinisikan std :: list, kita harus mengimpor file header . Berikut adalah sintaks definisi std :: list:

template < class Type, class Alloc =allocator > class list;

Berikut adalah uraian dari parameter di atas:

  • T - Mendefinisikan jenis elemen yang terkandung.

    Anda dapat mengganti T dengan tipe data apa pun, bahkan tipe yang ditentukan pengguna.

  • Alloc - Mendefinisikan jenis objek pengalokasi.

    Ini menggunakan template kelas pengalokasi secara default. Ini bergantung pada nilai dan menggunakan model alokasi memori sederhana.

Contoh 1:

#include #include #include 
int main() {std::list my_list = { 12, 5, 10, 9 };for (int x : my_list) {std::cout << x << '\n';}}

Keluaran:

Berikut tangkapan layar kodenya:

Penjelasan Kode:

  1. Sertakan file header algoritma untuk menggunakan fungsinya.
  2. Sertakan file header iostream untuk menggunakan fungsinya.
  3. Sertakan file header daftar untuk menggunakan fungsinya.
  4. Panggil fungsi main (). Logika program harus ditambahkan di dalam tubuh fungsi ini.
  5. Buat daftar bernama my_list dengan satu set 4 bilangan bulat.
  6. Gunakan for loop untuk membuat variabel loop x. Variabel ini akan digunakan untuk mengulangi elemen daftar.
  7. Cetak nilai dari daftar di konsol.
  8. Akhir badan for a loop.
  9. Akhir badan fungsi main ().

Fungsi Daftar C ++

Berikut adalah fungsi std :: list yang umum:

Fungsi Deskripsi
memasukkan() Fungsi ini menyisipkan item baru sebelum posisi poin iterator.
push_back () Fungsi ini menambahkan item baru di akhir daftar.
push_front () Itu menambahkan item baru di depan daftar.
pop_front () Ini menghapus item pertama daftar.
ukuran() Fungsi ini menentukan jumlah elemen daftar.
depan() Untuk menentukan item pertama daftar.
kembali() Untuk menentukan item terakhir daftar.
membalikkan() Ini membalikkan item daftar.
menggabungkan() Ini menggabungkan dua daftar yang diurutkan.

Pembuat

Berikut adalah daftar fungsi yang disediakan oleh file header :

  • Konstruktor default std :: list :: list () - Ini membuat daftar kosong, itu, dengan elemen nol.
  • Isi konstruktor std :: list :: list () - Ini membuat daftar dengan n elemen dan memberikan nilai nol (0) ke setiap elemen.
  • Range constructor std :: list :: list () - membuat daftar dengan banyak elemen dalam rentang pertama hingga terakhir.
  • Salin konstruktor std :: list :: list () - Ini membuat daftar dengan salinan setiap elemen yang terdapat dalam daftar yang ada.
  • Pindah konstruktor std :: list :: list () - membuat daftar dengan elemen dari daftar lain menggunakan semantik pindah.
  • Penginisialisasi daftar konstruktor std :: list :: list () - Ini membuat daftar dengan elemen dari daftar lain menggunakan semantik bergerak.

Contoh 2:

#include #include 
using namespace std;int main(void) {list l;list l1 = { 10, 20, 30 };list l2(l1.begin(), l1.end());list l3(move(l1));cout << "Size of list l: " << l.size() << endl;cout << "List l2 contents: " << endl;for (auto it = l2.begin(); it != l2.end(); ++it)cout << *it << endl;cout << "List l3 contents: " << endl;for (auto it = l3.begin(); it != l3.end(); ++it)cout << *it << endl;return 0;}

Keluaran:

Berikut tangkapan layar kodenya:

Penjelasan Kode:

  1. Sertakan file header iostream untuk menggunakan fungsinya.
  2. Sertakan file header daftar untuk menggunakan fungsinya.
  3. Sertakan namespace std dalam kode untuk menggunakan kelasnya tanpa memanggilnya.
  4. Panggil fungsi main (). Logika program harus ditambahkan di dalam tubuh fungsi ini.
  5. Buat daftar kosong bernama l.
  6. Buat daftar bernama l1 dengan satu set 3 bilangan bulat.
  7. Buat daftar bernama l2 dengan semua elemen dalam daftar bernama l1, dari awal hingga akhir.
  8. Buat daftar bernama l3 menggunakan semantik bergerak. Daftar l3 akan memiliki konten yang sama dengan daftar l2.
  9. Cetak ukuran daftar bernama l di konsol bersama teks lainnya.
  10. Cetak beberapa teks di konsol.
  11. Buat sebuah iterator bernama itu dan gunakan itu untuk mengulangi elemen dari daftar bernama l2.
  12. Cetak elemen dari daftar bernama l2 di konsol.
  13. Cetak beberapa teks di konsol.
  14. Buat sebuah iterator bernama itu dan gunakan itu untuk mengulang elemen dari daftar bernama l3.
  15. Cetak elemen dari daftar bernama l3 di konsol.
  16. Program harus mengembalikan nilai setelah berhasil diselesaikan.
  17. Akhir badan fungsi main ().

Properti penampung

Berikut adalah daftar properti container:

Properti Deskripsi
Urutan Kontainer urutan mengurutkan elemennya dalam urutan linier yang ketat. Elemen diakses oleh posisinya dalam urutan.
Daftar yang ditautkan ganda Setiap elemen memiliki informasi tentang cara menemukan elemen sebelumnya dan berikutnya. Hal ini memungkinkan waktu yang konstan untuk operasi penyisipan dan penghapusan.
Sadar pengalokasi Objek pengalokasi digunakan untuk mengubah ukuran penyimpanan secara dinamis.

Memasukkan ke dalam Daftar

Ada berbagai fungsi yang dapat kita gunakan untuk memasukkan nilai ke dalam daftar. Mari kita tunjukkan ini:

Contoh 3:

#include #include #include 
int main() {std::list my_list = { 12, 5, 10, 9 };my_list.push_front(11);my_list.push_back(18);auto it = std::find(my_list.begin(), my_list.end(), 10);if (it != my_list.end()) {my_list.insert(it, 21);}for (int x : my_list) {std::cout << x << '\n';}}

Keluaran:

Berikut tangkapan layar kodenya:

Penjelasan Kode:

  1. Sertakan file header algoritma untuk menggunakan fungsinya.
  2. Sertakan file header iostream untuk menggunakan fungsinya.
  3. Sertakan file header daftar untuk menggunakan fungsinya.
  4. Panggil fungsi main (). Logika program harus ditambahkan di dalam tubuh fungsi ini.
  5. Buat daftar bernama my_list dengan satu set 4 bilangan bulat.
  6. Masukkan elemen 11 ke depan daftar bernama my_list.
  7. Masukkan elemen 18 ke akhir daftar bernama my_list.
  8. Buat iterator dan gunakan untuk menemukan elemen 10 dari daftar my_list.
  9. Gunakan pernyataan if untuk menentukan apakah elemen di atas ditemukan atau tidak.
  10. Masukkan elemen 21 sebelum elemen di atas jika ditemukan.
  11. Akhir isi pernyataan if.
  12. Gunakan for loop untuk membuat variabel loop x. Variabel ini akan digunakan untuk mengulangi elemen daftar.
  13. Cetak nilai dari daftar di konsol.
  14. Akhir badan for a loop.
  15. Akhir badan fungsi main ().

Menghapus dari Daftar

Mungkin saja menghapus item dari daftar. Fungsi erase () memungkinkan Anda untuk menghapus item atau rentang item dari daftar.

  • Untuk menghapus satu item, Anda cukup memberikan satu posisi integer. Item tersebut akan dihapus.
  • Untuk menghapus rentang, Anda meneruskan iterator awal dan akhir. Mari kita tunjukkan ini.

Contoh 4:

#include #include #include 
using namespace std;int main() {std::list my_list = { 12, 5, 10, 9 };cout << "List elements before deletion: ";for (int x : my_list) {std::cout << x << '\n';}list::iterator i = my_list.begin();my_list.erase(i);cout << "\nList elements after deletion: ";for (int x : my_list) {std::cout << x << '\n';}return 0;}

Keluaran:

Berikut tangkapan layar kodenya:

Penjelasan Kode:

  1. Sertakan file header algoritma untuk menggunakan fungsinya.
  2. Sertakan file header iostream untuk menggunakan fungsinya.
  3. Sertakan file header daftar untuk menggunakan fungsinya.
  4. Sertakan namespace std dalam program kita untuk menggunakan kelasnya tanpa memanggilnya.
  5. Panggil fungsi main (). Logika program harus ditambahkan di dalam tubuh fungsi ini.
  6. Buat daftar bernama my_list dengan satu set 4 bilangan bulat.
  7. Cetak beberapa teks di konsol.
  8. Gunakan for loop untuk membuat variabel loop x. Variabel ini akan digunakan untuk mengulangi elemen daftar.
  9. Cetak nilai dari daftar di konsol.
  10. Akhir badan loop for.
  11. Buat iterator i yang menunjuk ke elemen pertama dari daftar.
  12. Gunakan fungsi erase () yang ditunjukkan oleh iterator i.
  13. Cetak beberapa teks di konsol.
  14. Gunakan for loop untuk membuat variabel loop x. Variabel ini akan digunakan untuk mengulangi elemen daftar.
  15. Cetak nilai dari daftar di konsol. Ini terjadi setelah penghapusan.
  16. Akhir badan loop for.
  17. Program harus mengembalikan nilai setelah berhasil diselesaikan.
  18. Akhir badan fungsi main ().

Ringkasan:

  • Std :: list adalah wadah penyimpanan.
  • Ini memungkinkan penyisipan dan penghapusan item dari mana saja pada waktu yang konstan.
  • Ini diimplementasikan sebagai tautan ganda
  • Data std :: list dapat diakses dua arah dan secara berurutan.
  • std :: list tidak mendukung akses acak cepat. Namun, ini mendukung akses berurutan dari segala arah.
  • Anda dapat menyebarkan elemen daftar std :: list di potongan memori yang berbeda.
  • Anda dapat menciutkan atau memperluas std :: list dari kedua ujung sesuai kebutuhan selama runtime.
  • Untuk memasukkan item ke dalam std :: list, kita menggunakan fungsi insert ().
  • Untuk menghapus item dari std :: list, kita menggunakan fungsi erase ().