Dalam C++, std::list mengacu pada wadah penyimpanan. Std:list memungkinkan Anda untuk memasukkan dan menghapus item dari mana saja. std::list diimplementasikan sebagai daftar tertaut ganda. Ini berarti daftar data dapat diakses secara 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 dalam potongan memori yang berbeda. Informasi yang diperlukan untuk akses berurutan ke data disimpan dalam wadah. std::list dapat diperluas dan menyusut dari kedua ujungnya sesuai kebutuhan selama runtime. Pengalokasi internal secara otomatis memenuhi persyaratan penyimpanan.
Dalam tutorial C++ ini, Anda akan belajar:
Apa itu std::list?
Mengapa menggunakan std::list?
Sintaks Daftar
Fungsi Daftar C++
Konstruktor
Properti penampung
Memasukkan ke dalam Daftar
Menghapus dari Daftar
Mengapa menggunakan std::list?
Berikut adalah alasan menggunakan std::List :
Std::list lebih baik dibandingkan dengan wadah urutan lainnya seperti array dan vektor.
Mereka memiliki kinerja yang lebih baik dalam menyisipkan, memindahkan, dan mengekstrak elemen dari posisi apa pun.
Std::list juga berfungsi lebih baik dengan algoritme yang melakukan operasi semacam itu secara intensif.
Sintaks Daftar
Untuk mendefinisikan std::list, kita harus mengimpor file header . Berikut adalah sintaks definisi std::list:
template < class Type, class Alloc =allocator<T> > class list;
Berikut adalah deskripsi dari parameter di atas:
T – Mendefinisikan jenis elemen yang terkandung.
Anda dapat mengganti T dengan tipe data apa pun, bahkan tipe yang ditentukan pengguna.
Alokasi – Mendefinisikan jenis 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 adalah 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.
Panggil fungsi main(). Logika program harus ditambahkan di dalam isi fungsi ini.
Buat daftar bernama my_list dengan kumpulan 4 bilangan bulat.
Gunakan for loop untuk membuat variabel loop x. Variabel ini akan digunakan untuk mengulangi elemen daftar.
Cetak nilai daftar di konsol.
Akhir dari badan for loop.
Akhir dari isi fungsi main().
Fungsi Daftar C++
Berikut adalah fungsi umum std::list:
FungsiDeskripsi insert()Fungsi ini menyisipkan item baru sebelum posisi titik iterator.push_back()Fungsi ini menambahkan item baru di akhir daftar.push_front()Ini menambahkan item baru di bagian depan daftar.pop_front()Ini menghapus daftar first item.size()Fungsi ini menentukan jumlah elemen daftar.front()Untuk menentukan item pertama daftar.back()Untuk menentukan item terakhir daftar.reverse()Ini membalikkan item daftar.merge()Ini menggabungkan dua daftar yang diurutkan.
Konstruktor
Berikut adalah daftar fungsi yang disediakan oleh file header :
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 terkandung dalam daftar yang ada.
Pindahkan konstruktor std::list::list()- membuat daftar dengan elemen daftar lain menggunakan semantik pindah.
Inisialisasi daftar konstruktor std::list::list()-Ini membuat daftar dengan elemen daftar lain menggunakan semantik pindah.
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 adalah screenshot 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 di dalam isi fungsi ini.
Buat daftar kosong bernama l.
Buat daftar bernama l1 dengan kumpulan 3 bilangan bulat.
Buat daftar bernama l2 dengan semua elemen dalam daftar bernama l1, dari awal hingga akhir.
Buat daftar bernama l3 menggunakan semantik pindah. 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 dengan nama dan gunakan untuk mengulangi elemen daftar bernama l2.
Cetak elemen daftar bernama l2 di konsol.
Cetak beberapa teks di konsol.
Buat iterator dengan 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 container:
Properti Deskripsi Wadah SequenceSequence mengurutkan elemennya dalam urutan linier yang ketat. Elemen diakses berdasarkan posisinya dalam urutan.Daftar tertaut gandaSetiap elemen memiliki informasi tentang cara menemukan elemen sebelumnya dan berikutnya. Hal ini memungkinkan waktu yang konstan untuk operasi penyisipan dan penghapusan. Sadar-Alokasi Objek pengalokasi digunakan untuk memodifikasi 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 adalah 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.
Panggil fungsi main(). Logika program harus ditambahkan di dalam isi fungsi ini.
Buat daftar bernama my_list dengan kumpulan 4 bilangan bulat.
Sisipkan elemen 11 ke depan daftar bernama my_list.
Sisipkan elemen 18 ke akhir daftar bernama my_list.
Buat iteratornya 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 for loop untuk membuat variabel loop x. Variabel ini akan digunakan untuk mengulangi elemen daftar.
Cetak nilai daftar di konsol.
Akhir dari badan for loop.
Akhir dari isi fungsi main().
Menghapus dari Daftar
Dimungkinkan untuk menghapus item dari daftar. Fungsi erase() memungkinkan Anda menghapus item atau rentang item dari daftar.
Untuk menghapus satu item, Anda cukup memasukkan satu posisi bilangan bulat. Item akan dihapus.
Untuk menghapus rentang, Anda melewati 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 ruang nama std dalam program kami untuk menggunakan kelasnya tanpa memanggilnya.
Panggil fungsi main(). Logika program harus ditambahkan di dalam isi fungsi ini.
Buat daftar bernama my_list dengan kumpulan 4 bilangan bulat.
Cetak beberapa teks di konsol.
Gunakan for loop untuk membuat variabel loop x. Variabel ini akan digunakan untuk mengulangi elemen daftar.
Cetak nilai daftar di konsol.
Akhir dari badan for loop.
Buat iterator i yang menunjuk ke elemen pertama dari daftar.
Gunakan fungsi erase() yang ditunjukkan oleh iterator i.
Cetak beberapa teks di konsol.
Gunakan for loop untuk membuat variabel loop x. Variabel ini akan digunakan untuk mengulangi elemen daftar.
Cetak nilai daftar di konsol. Ini muncul setelah penghapusan.
Akhir dari badan for loop.
Program harus mengembalikan nilai setelah berhasil diselesaikan.
Akhir dari isi fungsi main().
Ringkasan:
Std::list adalah wadah penyimpanan.
Ini memungkinkan penyisipan dan penghapusan item dari mana saja pada waktu yang konstan.
Ini diterapkan sebagai tautan ganda
Data std::list dapat diakses secara 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 dalam potongan memori yang berbeda.
Anda dapat mengecilkan atau memperluas std::list dari kedua ujungnya 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().