Std :: list C ++ ile Örnek

İçindekiler:

Anonim

Std :: list nedir?

C ++ 'da, std :: listesi bir saklama kabını ifade eder. Std: liste, herhangi bir yerden öğe eklemenize ve kaldırmanıza olanak tanır. Std :: liste, çift bağlantılı bir liste olarak uygulanır. Bu, liste verilerine iki yönlü ve sıralı olarak erişilebileceği anlamına gelir.

Standart Şablon Kitaplığı listesi hızlı rastgele erişimi desteklemez, ancak tüm yönlerden sıralı erişimi destekler.

Liste öğelerini farklı bellek yığınlarına dağıtabilirsiniz. Verilere sıralı erişim için gerekli bilgiler bir kapta saklanır. Std :: list, çalışma zamanı sırasında ihtiyaç duyulduğunda her iki uçtan da genişleyebilir ve küçülebilir. Dahili bir ayırıcı, depolama gereksinimlerini otomatik olarak karşılar.

Bu C ++ eğitiminde şunları öğreneceksiniz:

  • Std :: list nedir?
  • Neden std :: list kullanıyorsunuz?
  • Liste Sözdizimi
  • C ++ Liste İşlevleri
  • Oluşturucular
  • Konteyner özellikleri
  • Listeye Eklemek
  • Listeden Silme

Neden std :: list kullanıyorsunuz?

İşte std :: List kullanım nedenleri:

  • Std :: list, dizi ve vektör gibi diğer sıra kapsayıcılarına kıyasla daha iyidir.
  • Öğeleri herhangi bir konumdan yerleştirme, taşıma ve çıkarma konusunda daha iyi performansa sahiptirler.
  • Std :: list ayrıca bu tür işlemleri yoğun bir şekilde gerçekleştiren algoritmalarla daha iyi sonuç verir.

Liste Sözdizimi

Std :: list'i tanımlamak için başlık dosyasını içe aktarmalıyız. İşte std :: list tanımı sözdizimi:

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

İşte yukarıdaki parametrelerin bir açıklaması:

  • T - İçerdiği öğenin türünü tanımlar.

    T'yi herhangi bir veri türü, hatta kullanıcı tanımlı türler ile değiştirebilirsiniz.

  • Alloc - Ayırıcı nesnesinin türünü tanımlar.

    Bu, varsayılan olarak ayırıcı sınıf şablonunu kullanır. Değere bağlıdır ve basit bir bellek ayırma modeli kullanır.

Örnekler 1:

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

Çıktı:

İşte kodun bir ekran görüntüsü:

Kod Açıklaması:

  1. İşlevlerini kullanmak için algoritma başlık dosyasını ekleyin.
  2. İşlevlerini kullanmak için iostream başlık dosyasını ekleyin.
  3. İşlevlerini kullanmak için liste başlık dosyasını ekleyin.
  4. Main () işlevini çağırın. Program mantığı bu işlevin gövdesine eklenmelidir.
  5. 4 tam sayı kümesiyle my_list adlı bir liste oluşturun.
  6. Bir döngü değişkeni x oluşturmak için bir for döngüsü kullanın. Bu değişken, liste öğelerini yinelemek için kullanılacaktır.
  7. Konsoldaki listenin değerlerini yazdırın.
  8. Bir döngü için gövdesinin sonu.
  9. Main () işlevinin gövdesinin sonu.

C ++ Liste İşlevleri

Yaygın std :: list işlevleri şunlardır:

Fonksiyon Açıklama
ekle () Bu işlev, yineleyicinin işaret ettiği konumdan önce yeni bir öğe ekler.
Geri itmek() Bu işlevler listenin sonuna yeni bir öğe ekler.
push_front () Listenin önüne yeni bir öğe ekler.
pop_front () Listenin ilk öğesini siler.
boyut() Bu işlev, liste öğelerinin sayısını belirler.
ön() Listenin ilk maddelerini belirlemek için.
geri() Listenin son öğesini belirlemek için.
ters() Liste öğelerini tersine çevirir.
birleştirmek() Sıralanmış iki listeyi birleştirir.

Oluşturucular

başlık dosyası tarafından sağlanan işlevlerin listesi:

  • Default constructor std :: list :: list () - Sıfır elemanlı boş bir liste oluşturur.
  • Fill constructor std :: list :: list () - N elemanlı bir liste oluşturur ve her elemana sıfır (0) değeri atar.
  • Aralık yapıcı std :: list :: list () - ilkden sonuncuya kadar aralıkta birçok eleman içeren bir liste oluşturur.
  • Yapıcıyı kopyala std :: list :: list () - Var olan listedeki her elemanın bir kopyasını içeren bir liste oluşturur.
  • Taşı yapıcı std :: list :: list () - taşıma semantiğini kullanarak başka bir listenin öğeleriyle bir liste oluşturur.
  • Başlatıcı liste yapıcısı std :: list :: list () - Hareket anlamını kullanarak başka bir listenin öğeleriyle bir liste oluşturur.

Örnek 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;}

Çıktı:

İşte kodun bir ekran görüntüsü:

Kod Açıklaması:

  1. İşlevlerini kullanmak için iostream başlık dosyasını ekleyin.
  2. İşlevlerini kullanmak için liste başlık dosyasını ekleyin.
  3. Sınıflarını çağırmadan kullanmak için std ad alanını koda dahil edin.
  4. Main () işlevini çağırın. Program mantığı bu işlevin gövdesine eklenmelidir.
  5. L adlı boş bir liste oluşturun.
  6. 3 tam sayı kümesiyle l1 adlı bir liste oluşturun.
  7. Baştan sona l1 adlı listedeki tüm öğeleri içeren l2 adlı bir liste oluşturun.
  8. Taşıma semantiğini kullanarak l3 adlı bir liste oluşturun. Liste l3, liste l2 ile aynı içeriğe sahip olacaktır.
  9. Diğer metinle birlikte konsolda l adlı listenin boyutunu yazdırın.
  10. Konsolda biraz metin yazdırın.
  11. Adında bir yineleyici oluşturun ve l2 adlı listenin öğeleri üzerinde yineleme yapmak için kullanın.
  12. Konsolda l2 adlı listenin öğelerini yazdırın.
  13. Konsolda biraz metin yazdırın.
  14. Adında bir yineleyici oluşturun ve l3 adlı listenin öğeleri üzerinde yineleme yapmak için kullanın.
  15. Konsolda l3 adlı listenin öğelerini yazdırın.
  16. Program başarılı bir şekilde tamamlandığında değer döndürmelidir.
  17. Main () işlevinin gövdesinin sonu.

Konteyner özellikleri

Kapsayıcı özelliklerinin listesi şu şekildedir:

Emlak Açıklama
Sıra Sıra kapları, öğelerini katı bir doğrusal sırayla sıralar. Öğelere sıradaki konumlarına göre erişilir.
Çift bağlantılı liste Her öğe, önceki ve sonraki öğelerin nasıl konumlandırılacağına dair bilgilere sahiptir. Bu, ekleme ve silme işlemleri için sabit süre sağlar.
Ayırıcıya duyarlı Depolama boyutunu dinamik olarak değiştirmek için bir ayırıcı nesne kullanılır.

Listeye Eklemek

Bir listeye değer eklemek için kullanabileceğimiz farklı işlevler vardır. Bunu gösterelim:

Örnek 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';}}

Çıktı:

İşte kodun bir ekran görüntüsü:

Kod Açıklaması:

  1. İşlevlerini kullanmak için algoritma başlık dosyasını ekleyin.
  2. İşlevlerini kullanmak için iostream başlık dosyasını ekleyin.
  3. İşlevlerini kullanmak için liste başlık dosyasını ekleyin.
  4. Main () işlevini çağırın. Program mantığı bu işlevin gövdesine eklenmelidir.
  5. 4 tam sayı kümesiyle my_list adlı bir liste oluşturun.
  6. 11 öğesini my_list adlı listenin önüne ekleyin.
  7. My_list adlı listenin sonuna 18 öğesini ekleyin.
  8. Bir yineleyici oluşturun ve my_list listesinden 10 öğesini bulmak için kullanın.
  9. Yukarıdaki öğenin bulunup bulunmadığını belirlemek için bir if ifadesi kullanın.
  10. Bulunursa, 21 öğesini yukarıdaki öğenin önüne ekleyin.
  11. İf ifadesinin gövdesinin sonu.
  12. Bir döngü değişkeni x oluşturmak için bir for döngüsü kullanın. Bu değişken, liste öğelerini yinelemek için kullanılacaktır.
  13. Konsoldaki listenin değerlerini yazdırın.
  14. Bir döngü için gövdesinin sonu.
  15. Main () işlevinin gövdesinin sonu.

Listeden Silme

Listeden öğeler silmek mümkündür. Silme () işlevi, bir listeden bir öğeyi veya bir dizi öğeyi silmenizi sağlar.

  • Tek bir öğeyi silmek için tek bir tamsayı konumu geçmeniz yeterlidir. Öğe silinecek.
  • Bir aralığı silmek için, başlangıç ​​ve bitiş yineleyicilerinden geçersiniz. Bunu gösterelim.

Örnek 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;}

Çıktı:

İşte kodun ekran görüntüsü:

Kod Açıklaması:

  1. İşlevlerini kullanmak için algoritma başlık dosyasını ekleyin.
  2. İşlevlerini kullanmak için iostream başlık dosyasını ekleyin.
  3. İşlevlerini kullanmak için liste başlık dosyasını ekleyin.
  4. Sınıflarını çağırmadan kullanmak için std ad alanını programımıza dahil edin.
  5. Main () işlevini çağırın. Program mantığı bu işlevin gövdesine eklenmelidir.
  6. 4 tam sayı kümesiyle my_list adlı bir liste oluşturun.
  7. Konsolda biraz metin yazdırın.
  8. Bir döngü değişkeni x oluşturmak için bir for döngüsü kullanın. Bu değişken, liste öğelerini yinelemek için kullanılacaktır.
  9. Konsoldaki listenin değerlerini yazdırın.
  10. For döngüsü gövdesinin sonu.
  11. Listenin ilk öğesine işaret eden bir iteratör oluşturun.
  12. Yineleyici i tarafından gösterilen silme () işlevini kullanın.
  13. Konsolda biraz metin yazdırın.
  14. Bir döngü değişkeni x oluşturmak için bir for döngüsü kullanın. Bu değişken, liste öğelerini yinelemek için kullanılacaktır.
  15. Konsoldaki listenin değerlerini yazdırın. Bu, silme işleminden sonra gelir.
  16. For döngüsü gövdesinin sonu.
  17. Program başarıyla tamamlandığında bir değer döndürmelidir.
  18. Main () işlevinin gövdesinin sonu.

Özet:

  • Std :: list bir saklama kabıdır.
  • Sabit zamanda herhangi bir yerden öğelerin eklenmesine ve silinmesine izin verir.
  • Çift bağlantı olarak uygulanır
  • Std :: list verilerine iki yönlü ve sıralı olarak erişilebilir.
  • std :: list hızlı rastgele erişimi desteklemez. Ancak, her yönden sıralı erişimi destekler.
  • Std :: list'in liste elemanlarını farklı bellek yığınlarına dağıtabilirsiniz.
  • Std :: list'i çalışma süresi boyunca gerektiği gibi her iki uçtan küçültebilir veya genişletebilirsiniz.
  • Std :: list içine öğe eklemek için, insert () işlevini kullanıyoruz.
  • Std :: listeden öğeleri silmek için, silme () işlevini kullanıyoruz.