Std :: senarai dalam C ++ dengan Contoh

Isi kandungan:

Anonim

Apakah senarai std ::?

Dalam C ++, senarai std :: merujuk kepada bekas simpanan. Senarai std: membolehkan anda memasukkan dan membuang item dari mana sahaja. Senarai std :: dilaksanakan sebagai senarai berangkai ganda. Ini bermaksud data senarai dapat diakses dua arah dan berturutan.

Senarai Pustaka Templat Standard tidak menyokong akses rawak cepat, tetapi menyokong akses berurutan dari semua arah.

Anda boleh menyebarkan elemen senarai dalam bahagian memori yang berbeza. Maklumat yang diperlukan untuk akses berurutan ke data disimpan di dalam bekas. Senarai std :: dapat berkembang dan menyusut dari kedua-dua hujungnya seperti yang diperlukan semasa waktu proses. Peruntukan dalaman secara automatik memenuhi syarat penyimpanan.

Dalam tutorial C ++ ini, anda akan belajar:

  • Apakah senarai std ::?
  • Mengapa menggunakan std :: list?
  • Senarai Sintaks
  • Fungsi Senarai C ++
  • Pembina
  • Sifat kontena
  • Memasukkan ke dalam Senarai
  • Memadam dari Senarai

Mengapa menggunakan std :: list?

Berikut adalah sebab penggunaan std :: List:

  • Senarai std :: lebih baik dibandingkan dengan bekas turutan lain seperti susunan dan vektor.
  • Mereka mempunyai prestasi yang lebih baik dalam memasukkan, bergerak, dan mengekstrak elemen dari kedudukan apa pun.
  • Senarai std :: juga berfungsi lebih baik dengan algoritma yang melakukan operasi sedemikian secara intensif.

Senarai Sintaks

Untuk menentukan senarai std ::, kita mesti mengimport fail tajuk . Berikut adalah sintaks definisi senarai std :: list:

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

Berikut adalah penerangan mengenai parameter di atas:

  • T - Menentukan jenis unsur yang terdapat.

    Anda boleh menggantikan T dengan sebarang jenis data, bahkan jenis yang ditentukan pengguna.

  • Alloc - Mentakrifkan jenis objek pengagihan.

    Ini menggunakan templat kelas alokasi secara lalai. Ia bergantung pada nilai dan menggunakan model peruntukan memori yang 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';}}

Pengeluaran:

Berikut adalah tangkapan skrin kod:

Penjelasan Kod:

  1. Sertakan fail tajuk algoritma untuk menggunakan fungsinya.
  2. Sertakan fail tajuk iostream untuk menggunakan fungsinya.
  3. Sertakan fail header senarai untuk menggunakan fungsinya.
  4. Panggil fungsi utama (). Logik program harus ditambahkan dalam badan fungsi ini.
  5. Buat senarai bernama my_list dengan set 4 bilangan bulat.
  6. Gunakan loop for untuk membuat pemboleh ubah loop x. Pemboleh ubah ini akan digunakan untuk mengulangi elemen senarai.
  7. Cetak nilai senarai di konsol.
  8. Akhir badan untuk gelung.
  9. Akhir badan utama () fungsi.

Fungsi Senarai C ++

Berikut adalah fungsi senarai std :: list yang biasa:

Fungsi Penerangan
masukkan () Fungsi ini memasukkan item baru sebelum kedudukan iterator menunjukkan.
menolak kembali() Fungsi ini menambah item baru di hujung senarai.
push_front () Ia menambah item baru di bahagian depan senarai.
pop_front () Ini memadamkan item pertama senarai.
saiz () Fungsi ini menentukan bilangan elemen senarai.
depan () Untuk menentukan item pertama senarai.
belakang () Untuk menentukan item terakhir senarai.
terbalik () Ia membalikkan item senarai.
menggabungkan () Ia menggabungkan dua senarai yang disusun.

Pembina

Berikut adalah senarai fungsi yang disediakan oleh fail tajuk :

  • Pembina lalai std :: list :: list () - Ia membuat senarai kosong, dengan elemen sifar.
  • Isi konstruktor std :: list :: list () - Ia membuat senarai dengan elemen n dan memberikan nilai sifar (0) untuk setiap elemen.
  • Range konstruktor std :: list :: list () - membuat senarai dengan banyak elemen dalam julat pertama hingga terakhir.
  • Salin konstruktor std :: list :: list () - Ia membuat senarai dengan salinan setiap elemen yang terdapat dalam senarai yang ada.
  • Pindah konstruktor std :: list :: list () - membuat senarai dengan unsur-unsur senarai lain menggunakan semantik bergerak.
  • Initializer list buildor std :: list :: list () - Ia membuat senarai dengan unsur-unsur senarai 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;}

Pengeluaran:

Berikut adalah tangkapan skrin kod:

Penjelasan Kod:

  1. Sertakan fail tajuk iostream untuk menggunakan fungsinya.
  2. Sertakan fail header senarai untuk menggunakan fungsinya.
  3. Sertakan ruang nama std dalam kod untuk menggunakan kelasnya tanpa memanggilnya.
  4. Panggil fungsi utama (). Logik program harus ditambahkan dalam badan fungsi ini.
  5. Buat senarai kosong bernama l.
  6. Buat senarai bernama l1 dengan set 3 bilangan bulat.
  7. Buat senarai bernama l2 dengan semua elemen dalam senarai bernama l1, dari awal hingga akhir.
  8. Buat senarai bernama l3 menggunakan semantik bergerak. Senarai l3 akan mempunyai kandungan yang sama dengan senarai l2.
  9. Cetak ukuran senarai bernama l pada konsol bersama teks lain.
  10. Cetak sebilangan teks pada konsol.
  11. Buat iterator yang dinamakannya dan gunakan untuk melakukan iterasi ke atas elemen-elemen senarai bernama l2.
  12. Cetak elemen senarai bernama l2 pada konsol.
  13. Cetak sebilangan teks pada konsol.
  14. Buat iterator yang dinamakannya dan gunakan untuk melakukan iterasi ke atas elemen-elemen senarai yang bernama l3.
  15. Cetak elemen senarai bernama l3 di konsol.
  16. Program mesti mengembalikan nilai setelah berjaya diselesaikan.
  17. Akhir badan utama () fungsi.

Sifat kontena

Berikut adalah senarai sifat kontena:

Harta tanah Penerangan
Urutan Bekas urutan menyusun unsur-unsurnya dalam urutan linear yang ketat. Elemen diakses oleh kedudukannya mengikut urutan.
Senarai berganda-berkait Setiap elemen mempunyai maklumat mengenai cara mencari elemen sebelumnya dan seterusnya. Ini membolehkan masa yang berterusan untuk operasi penyisipan dan penghapusan.
Allocator-sedar Objek alokasi digunakan untuk mengubah ukuran penyimpanan secara dinamik.

Memasukkan ke dalam Senarai

Ada fungsi yang berbeza yang dapat kita gunakan untuk memasukkan nilai ke dalam daftar. Mari 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';}}

Pengeluaran:

Berikut adalah tangkapan skrin kod:

Penjelasan Kod:

  1. Sertakan fail tajuk algoritma untuk menggunakan fungsinya.
  2. Sertakan fail tajuk iostream untuk menggunakan fungsinya.
  3. Sertakan fail header senarai untuk menggunakan fungsinya.
  4. Panggil fungsi utama (). Logik program harus ditambahkan dalam badan fungsi ini.
  5. Buat senarai bernama my_list dengan set 4 bilangan bulat.
  6. Masukkan elemen 11 ke bahagian depan senarai bernama my_list.
  7. Masukkan elemen 18 ke hujung senarai bernama my_list.
  8. Buat iterator dan gunakannya untuk mencari elemen 10 dari senarai my_list.
  9. Gunakan pernyataan if untuk menentukan sama ada unsur di atas dijumpai atau tidak.
  10. Masukkan elemen 21 sebelum elemen di atas sekiranya dijumpai.
  11. Akhir badan penyataan if.
  12. Gunakan loop for untuk membuat pemboleh ubah loop x. Pemboleh ubah ini akan digunakan untuk mengulangi elemen senarai.
  13. Cetak nilai senarai di konsol.
  14. Akhir badan untuk gelung.
  15. Akhir badan utama () fungsi.

Memadam dari Senarai

Ada kemungkinan untuk menghapus item dari senarai. Fungsi erase () membolehkan anda menghapus item atau pelbagai item dari senarai.

  • Untuk memadam satu item, anda hanya melepasi satu kedudukan bulat. Item tersebut akan dipadamkan.
  • Untuk menghapus julat, anda meneruskan iterator permulaan dan akhir. Mari 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;}

Pengeluaran:

Berikut adalah tangkapan skrin kod:

Penjelasan Kod:

  1. Sertakan fail tajuk algoritma untuk menggunakan fungsinya.
  2. Sertakan fail tajuk iostream untuk menggunakan fungsinya.
  3. Sertakan fail header senarai untuk menggunakan fungsinya.
  4. Sertakan ruang nama std dalam program kami untuk menggunakan kelasnya tanpa memanggilnya.
  5. Panggil fungsi utama (). Logik program harus ditambahkan dalam badan fungsi ini.
  6. Buat senarai bernama my_list dengan set 4 bilangan bulat.
  7. Cetak sebilangan teks pada konsol.
  8. Gunakan loop for untuk membuat pemboleh ubah loop x. Pemboleh ubah ini akan digunakan untuk mengulangi elemen senarai.
  9. Cetak nilai senarai di konsol.
  10. Hujung badan gelung untuk.
  11. Buat iterator i yang menunjukkan elemen pertama dalam senarai.
  12. Gunakan fungsi erase () yang ditunjukkan oleh iterator i.
  13. Cetak sebilangan teks pada konsol.
  14. Gunakan loop for untuk membuat pemboleh ubah loop x. Pemboleh ubah ini akan digunakan untuk mengulangi elemen senarai.
  15. Cetak nilai senarai di konsol. Ini berlaku selepas penghapusan.
  16. Hujung badan gelung untuk.
  17. Program mesti mengembalikan nilai setelah berjaya diselesaikan.
  18. Akhir badan utama () fungsi.

Ringkasan:

  • Senarai std :: adalah bekas simpanan.
  • Ia membolehkan kemasukan dan penghapusan item dari mana sahaja pada masa yang tetap.
  • Ia dilaksanakan sebagai pautan berganda
  • Data senarai std :: boleh diakses dua arah dan berturutan.
  • std :: list tidak menyokong akses rawak cepat. Walau bagaimanapun, ia menyokong akses berurutan dari semua arah.
  • Anda boleh menyebarkan elemen senarai std :: list dalam bahagian memori yang berbeza.
  • Anda boleh mengecilkan atau mengembangkan senarai std :: dari kedua-dua hujung seperti yang diperlukan semasa waktu proses.
  • Untuk memasukkan item ke dalam std :: list, kami menggunakan fungsi insert ().
  • Untuk menghapus item dari senarai std ::, kami menggunakan fungsi hapus ().