std::daftar masuk C++ dengan Contoh
โก Ringkasan Cerdas
std::daftar masuk C++ adalah kontainer urutan yang diimplementasikan sebagai daftar berantai ganda, memungkinkan penyisipan dan penghapusan cepat di posisi mana pun sambil menyimpan elemen dalam memori yang tidak berdekatan dan mendukung akses sekuensial dua arah, bukan akses acak.

Apa itu std::daftar?
In C++`std::list` mengacu pada sebuah kontainer penyimpanan. `std::list` memungkinkan Anda untuk memasukkan dan menghapus item dari mana saja. `std::list` diimplementasikan sebagai daftar berantai ganda. Ini berarti data dalam daftar dapat diakses secara dua arah dan berurutan.
Daftar Standard Template Library tidak mendukung akses acak cepat, tetapi mendukung akses sekuensial dari semua 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.
Ciri-ciri ini menimbulkan pertanyaan praktis: kapan sebenarnya Anda harus menggunakan daftar?
Mengapa menggunakan std::daftar?
Berikut adalah alasan mengapa menggunakan std::list:
- std::list berkinerja lebih baik dibandingkan dengan kontainer urutan lainnya seperti array dan vector.
- Mereka memiliki kinerja yang lebih baik dalam memasukkan, memindahkan, dan mengeluarkantracelemen ting dari posisi mana saja.
- std::list juga bekerja lebih baik dengan algoritma yang melakukan operasi tersebut secara intensif.
Setelah alasannya jelas, langkah selanjutnya adalah sintaks yang mendeklarasikannya.
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 terkandung. Anda dapat mengganti T dengan tipe data apa pun, bahkan tipe yang ditentukan pengguna.
- Alloc โ Mendefinisikan tipe objek alokator. Secara default, ini menggunakan templat kelas alokator. Nilainya bergantung pada tipe dan menggunakan model alokasi memori yang 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:
Code Penjelasan:
- 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.
- Menggunakan untuk loop untuk membuat variabel perulangan x. Variabel ini akan digunakan untuk mengulang elemen-elemen dalam daftar.
- Cetak nilai daftar di konsol.
- Akhir dari badan perulangan for.
- Akhir dari isi fungsi main().
C++ Daftar Fungsi
Berikut adalah fungsi umum std::list:
| fungsi | Deskripsi |
|---|---|
| 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:
Code Penjelasan:
- 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 | Deskripsi |
|---|---|
| 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 sebuah daftar. Mari kita demonstrasikan:
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:
Code Penjelasan:
- 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().
Elemen yang dimasukkan ke dalam daftar dapat dengan mudah dikeluarkan.
Menghapus dari Daftar
Dimungkinkan untuk menghapus item dari sebuah daftar. Fungsi erase() memungkinkan Anda untuk menghapus satu item atau rentang item dari sebuah daftar.
- Untuk menghapus satu item, Anda cukup memasukkan satu posisi bilangan bulat. Barang tersebut akan dihapus.
- Untuk menghapus suatu rentang, Anda memberikan iterator awal dan akhir. Mari kita demonstrasikan hal 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 ini tangkapan layar kodenya:
Code Penjelasan:
- 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().






