std::daftar masuk C++ dengan Contoh
Apa itu std::daftar?
In C++, std::list mengacu pada wadah penyimpanan. std:list memungkinkan Anda menyisipkan dan menghapus item dari mana saja. std::list diimplementasikan sebagai daftar tertaut ganda. Artinya, data daftar dapat diakses secara dua arah dan berurutan.
Daftar Perpustakaan Templat Standar tidak mendukung akses acak cepat, namun mendukung akses berurutan dari segala arah.
Anda dapat menyebarkan elemen daftar di bagian memori yang berbeda. Informasi yang diperlukan untuk akses berurutan ke data disimpan dalam sebuah wadah. std::list dapat diperluas dan diperkecil dari kedua ujungnya sesuai kebutuhan selama runtime. Pengalokasi internal secara otomatis memenuhi persyaratan penyimpanan.
Mengapa menggunakan std::daftar?
Inilah alasan menggunakan std::List :
- std::list berfungsi lebih baik dibandingkan dengan wadah urutan lain seperti array dan vektor.
- Mereka memiliki performa yang lebih baik dalam menyisipkan, memindahkan, dan mengekstraksi elemen dari posisi mana pun.
- std::list juga bekerja lebih baik dengan algoritma yang melakukan operasi tersebut secara intensif.
Daftar Sintaks
Untuk mendefinisikan std::list, kita harus mengimpor berkas tajuk. Berikut adalah sintaks definisi std::list:
template < class Type, class Alloc =allocator<T> > class list;
Berikut penjelasan parameter di atas:
- T – Mendefinisikan tipe elemen yang dikandungnya. Anda dapat mengganti T dengan tipe data apa pun, bahkan tipe yang ditentukan pengguna.
- Alloc – Mendefinisikan tipe objek pengalokasi. Ini menggunakan templat kelas pengalokasi secara default. Ini bergantung pada nilai dan menggunakan model alokasi memori sederhana.
Contoh 1
#include <algorithm> #include <iostream> #include <list> int main() { std::list<int> my_list = { 12, 5, 10, 9 }; for (int x : my_list) { std::cout << x << '\n'; } }
Keluaran:
Berikut ini tangkapan layar kodenya:
Penjelasan Kode:
- Sertakan file header algoritma untuk menggunakan fungsinya.
- Sertakan file header iostream untuk menggunakan fungsinya.
- Sertakan file header daftar untuk menggunakan fungsinya.
- Panggil fungsi main(). Logika program harus ditambahkan dalam isi fungsi ini.
- Buat daftar bernama my_list dengan kumpulan 4 bilangan bulat.
- Gunakan perulangan for untuk membuat variabel perulangan x. Variabel ini akan digunakan untuk mengulangi elemen daftar.
- Cetak nilai daftar di konsol.
- Ujung tubuh untuk loop.
- Akhir dari isi fungsi main().
C++ Daftar Fungsi
Berikut adalah fungsi umum std::list:
fungsi | Description |
---|---|
memasukkan() | Fungsi ini menyisipkan item baru sebelum posisi yang ditunjuk iterator. |
dorong_kembali() | Fungsi ini menambahkan item baru di akhir daftar. |
dorong_depan() | Itu menambahkan item baru di bagian depan daftar. |
pop_depan() | Ini menghapus item pertama dalam daftar. |
ukuran() | Fungsi ini menentukan jumlah elemen daftar. |
depan() | Untuk menentukan item pertama dalam daftar. |
kembali() | Untuk menentukan item terakhir dalam daftar. |
balik() | Ini membalikkan item daftar. |
menggabungkan() | Ini menggabungkan dua daftar yang diurutkan. |
Konstruktor
Di sini adalah daftar fungsi disediakan oleh berkas tajuk:
- Konstruktor default std::list::list()- Ini membuat daftar kosong, dengan elemen nol.
- Isi konstruktor std::list::list()- Ini membuat daftar dengan n elemen dan memberikan nilai nol (0) untuk setiap elemen.
- Konstruktor rentang 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.
- Pindahkan konstruktor std::list::list()- membuat daftar dengan elemen daftar lain menggunakan semantik pemindahan.
- Konstruktor daftar penginisialisasi std::list::list()-Ini membuat daftar dengan elemen daftar lain menggunakan semantik pemindahan.
Contoh 2
#include <iostream> #include <list> using namespace std; int main(void) { list<int> l; list<int> l1 = { 10, 20, 30 }; list<int> l2(l1.begin(), l1.end()); list<int> 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 ini tangkapan layar kodenya:
Penjelasan Kode:
- Sertakan file header iostream untuk menggunakan fungsinya.
- Sertakan file header daftar untuk menggunakan fungsinya.
- Sertakan namespace std dalam kode untuk menggunakan kelasnya tanpa memanggilnya.
- Panggil fungsi main(). Logika program harus ditambahkan dalam isi fungsi ini.
- Buat daftar kosong bernama l.
- Buat daftar bernama l1 dengan himpunan 3 bilangan bulat.
- Buat daftar bernama l2 dengan semua elemen dalam daftar bernama l1, dari awal hingga akhir.
- Buat daftar bernama l3 menggunakan semantik gerakan. Daftar l3 akan memiliki konten yang sama dengan daftar l2.
- Cetak ukuran daftar bernama l di konsol bersama teks lainnya.
- Cetak beberapa teks di konsol.
- Buat iterator yang diberi nama dan gunakan untuk mengulangi elemen daftar bernama l2.
- Cetak elemen daftar bernama l2 di konsol.
- Cetak beberapa teks di konsol.
- Buat iterator yang diberi nama dan gunakan untuk mengulangi elemen daftar bernama l3.
- Cetak elemen daftar bernama l3 di konsol.
- Program harus mengembalikan nilai setelah berhasil diselesaikan.
- Akhir dari isi fungsi main().
Properti penampung
Berikut adalah daftar properti kontainer:
Milik | Description |
---|---|
Urutan | Kontainer urutan mengurutkan elemennya dalam urutan linier yang ketat. Elemen diakses berdasarkan posisinya dalam urutan. |
Daftar tertaut 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 <algorithm> #include <iostream> #include <list> int main() { std::list<int> 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 ini tangkapan layar kodenya:
Penjelasan Kode:
- Sertakan file header algoritma untuk menggunakan fungsinya.
- Sertakan file header iostream untuk menggunakan fungsinya.
- Sertakan file header daftar untuk menggunakan fungsinya.
- Panggil fungsi main(). Logika program harus ditambahkan dalam isi fungsi ini.
- Buat daftar bernama my_list dengan kumpulan 4 bilangan bulat.
- Masukkan elemen 11 ke depan daftar bernama my_list.
- Masukkan elemen 18 ke akhir daftar bernama my_list.
- Buat iterator dan gunakan untuk menemukan elemen 10 dari daftar my_list.
- Gunakan pernyataan if untuk menentukan apakah elemen di atas ditemukan atau tidak.
- Sisipkan elemen 21 sebelum elemen di atas jika ditemukan.
- Akhir dari isi pernyataan if.
- Gunakan perulangan for untuk membuat variabel perulangan x. Variabel ini akan digunakan untuk mengulangi elemen daftar.
- Cetak nilai daftar di konsol.
- Akhir dari badan perulangan for.
- Akhir dari isi fungsi main().
Menghapus dari Daftar
Dimungkinkan untuk menghapus item dari daftar. Fungsi erase() memungkinkan Anda menghapus item atau serangkaian item dari daftar.
- Untuk menghapus satu item, Anda cukup memasukkan satu posisi bilangan bulat. Barang tersebut akan dihapus.
- Untuk menghapus rentang, Anda meneruskan iterator awal dan akhir. Mari kita tunjukkan ini.
Contoh 4
#include <algorithm> #include <iostream> #include <list> using namespace std; int main() { std::list<int> my_list = { 12, 5, 10, 9 }; cout << "List elements before deletion: "; for (int x : my_list) { std::cout << x << '\n'; } list<int>::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 screenshot kodenya:
Penjelasan Kode:
- Sertakan file header algoritma untuk menggunakan fungsinya.
- Sertakan file header iostream untuk menggunakan fungsinya.
- Sertakan file header daftar untuk menggunakan fungsinya.
- Sertakan namespace std dalam program kami untuk menggunakan kelasnya tanpa memanggilnya.
- Panggil fungsi main(). Logika program harus ditambahkan dalam isi fungsi ini.
- Buat daftar bernama my_list dengan kumpulan 4 bilangan bulat.
- Cetak beberapa teks di konsol.
- Gunakan perulangan for untuk membuat variabel perulangan x. Variabel ini akan digunakan untuk mengulangi elemen daftar.
- Cetak nilai daftar di konsol.
- Akhir dari badan perulangan for.
- Buat iterator i yang menunjuk ke elemen pertama dari daftar.
- Gunakan fungsi erase() yang ditunjuk oleh iterator i.
- Cetak beberapa teks di konsol.
- Gunakan perulangan for untuk membuat variabel perulangan x. Variabel ini akan digunakan untuk mengulangi elemen daftar.
- Cetak nilai daftar di konsol. Ini terjadi setelah penghapusan.
- Akhir dari badan perulangan for.
- Program harus mengembalikan nilai setelah berhasil diselesaikan.
- Akhir dari isi fungsi main().
Ringkasan
- std::list adalah wadah penyimpanan.
- Hal 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 berurutan.
- std::list tidak mendukung akses acak cepat. Namun, ini mendukung akses berurutan dari segala arah.
- Anda dapat menyebarkan elemen daftar std::list di bagian memori yang berbeda.
- Anda dapat mengecilkan atau memperluas std::list dari kedua ujungnya sesuai kebutuhan selama runtime.
- Untuk memasukkan item ke dalam std::list, kami menggunakan fungsi insert().
- Untuk menghapus item dari std::list, kami menggunakan fungsi Erase().