std::liste girişi C++ Örnek ile
Std::liste nedir?
In C++std::list bir depolama kapsayıcısını ifade eder. std:list, öğeleri herhangi bir yerden eklemenizi ve kaldırmanızı sağlar. std::list çift bağlantılı bir liste olarak uygulanır. Bu, liste verilerine çift yönlü ve sıralı olarak erişilebileceği anlamına gelir.
Standart Şablon Kitaplığı listesi hızlı rastgele erişimi desteklemez ancak her yönden sıralı erişimi destekler.
Liste öğelerini farklı bellek parçalarına dağıtabilirsiniz. Verilere sıralı erişim için gereken bilgiler bir kapta saklanır. std::list çalışma zamanı sırasında gerektiği gibi her iki uçtan da genişleyebilir ve daralabilir. Dahili bir ayırıcı, depolama gereksinimlerini otomatik olarak karşılar.
Neden std::list kullanıyorsunuz?
İşte std::List kullanmanın nedenleri:
- std::list, dizi ve vektör gibi diğer dizi kaplarıyla karşılaştırıldığında daha iyi sonuç verir.
- Öğeleri herhangi bir konumdan ekleme, taşıma ve çıkarma konusunda daha iyi bir performansa sahiptirler.
- Std::list, bu tür işlemleri yoğun bir şekilde gerçekleştiren algoritmalarla da daha iyi sonuç verir.
Liste Söz Dizimi
Std::list'i tanımlamak için, içe aktarmamız gerekir. başlık dosyası. İşte std::list tanımı sözdizimi:
template < class Type, class Alloc =allocator<T> > class list;
Yukarıdaki parametrelerin açıklaması aşağıda verilmiştir:
- T – İçerdiği öğenin türünü tanımlar. T'yi herhangi bir veri türüyle, hatta kullanıcı tanımlı türlerle değiştirebilirsiniz.
- Alloc – Ayırıcı nesnenin 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 <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';
}
}
Çıktı:
İşte kodun ekran görüntüsü:
Kod Açıklaması:
- İşlevlerini kullanmak için algoritma başlık dosyasını ekleyin.
- İşlevlerini kullanmak için iostream başlık dosyasını ekleyin.
- İşlevlerini kullanmak için liste başlığı dosyasını ekleyin.
- main() fonksiyonunu çağırın. Program mantığı bu fonksiyonun gövdesine eklenmelidir.
- 4 tam sayıdan oluşan my_list adlı bir liste oluşturun.
- Bir x döngü değişkeni oluşturmak için for döngüsünü kullanın. Bu değişken liste öğeleri üzerinde yineleme yapmak için kullanılacaktır.
- Listenin değerlerini konsola yazdırın.
- Vücudun sonu döngü için.
- Main() işlevinin gövdesinin sonu.
C++ Liste Fonksiyonları
Yaygın std::list işlevleri şunlardır:
| İşlev | Tanım |
|---|---|
| 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 fonksiyon liste elemanlarının sayısını belirler. |
| ön() | Listenin ilk öğelerini belirlemek için. |
| geri() | Listenin son öğesini belirlemek için. |
| tersine çevirmek() | Liste öğelerini tersine çevirir. |
| birleştirmek() | İki sıralı listeyi birleştirir. |
İnşaatçılar
Listesi fonksiyonlar tarafından sağlanan başlık dosyası:
- Varsayılan kurucu std::list::list()- Sıfır elemanlı boş bir liste oluşturur.
- Doldurma yapıcısı std::list::list()- N öğeli bir liste oluşturur ve her öğeye sıfır (0) değeri atar.
- Aralık yapıcısı std::list::list()- ilkten sonuncuya kadar birçok öğe içeren bir liste oluşturur.
- Kopyalama yapıcısı std::list::list()- Mevcut listede bulunan her öğenin bir kopyasını içeren bir liste oluşturur.
- Taşıma yapıcısı std::list::list()- taşıma semantiğini kullanarak başka bir listenin öğelerini içeren bir liste oluşturur.
- Başlatıcı listesi yapıcısı std::list::list()-Taşıma semantiğini kullanarak başka bir listenin öğelerini içeren bir liste oluşturur.
Örnek 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;
}
Çıktı:
İşte kodun ekran görüntüsü:
Kod Açıklaması:
- İşlevlerini kullanmak için iostream başlık dosyasını ekleyin.
- İşlevlerini kullanmak için liste başlığı dosyasını ekleyin.
- Sınıflarını çağırmadan kullanmak için std ad alanını koda ekleyin.
- main() fonksiyonunu çağırın. Program mantığı bu fonksiyonun gövdesine eklenmelidir.
- L adında boş bir liste oluşturun.
- 1 tam sayıdan oluşan l3 adında bir liste oluşturun.
- L2 adlı listedeki tüm öğelerin başından sonuna kadar l1 adında bir liste oluşturun.
- Taşıma anlambilimini kullanarak l3 adında bir liste oluşturun. l3 listesi l2 listesiyle aynı içeriğe sahip olacaktır.
- Konsoldaki l isimli listenin boyutunu diğer metinlerin yanında yazdırın.
- Konsola bir miktar metin yazdırın.
- Adında bir yineleyici oluşturun ve onu, l2 adlı listenin öğeleri üzerinde yineleme yapmak için kullanın.
- L2 isimli listenin elemanlarını konsola yazdırın.
- Konsola bir miktar metin yazdırın.
- Adında bir yineleyici oluşturun ve onu, l3 adlı listenin öğeleri üzerinde yineleme yapmak için kullanın.
- L3 isimli listenin elemanlarını konsola yazdırın.
- Program başarılı bir şekilde tamamlandıktan sonra değeri döndürmelidir.
- Main() işlevinin gövdesinin sonu.
Konteyner özellikleri
Konteyner özelliklerinin listesi aşağıdadır:
| Varlığınızı | Tanım |
|---|---|
| Dizi | Sıra kapları, elemanlarını katı bir doğrusal sırayla sıralar. Öğelere dizideki konumlarına göre erişilir. |
| Çift bağlantılı liste | Her öğenin önceki ve sonraki öğelerin yerinin nasıl belirleneceğine ilişkin bilgisi vardır. Bu, ekleme ve silme işlemleri için sabit süreye izin verir. |
| Ayırıcıyı tanıyan | Depolama boyutunu dinamik olarak değiştirmek için bir ayırıcı nesnesi kullanılır. |
Listeye Ekleme
Bir listeye değer eklemek için kullanabileceğimiz farklı işlevler vardır. Bunu gösterelim:
Örnek 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';
}
}
Çıktı:
İşte kodun ekran görüntüsü:
Kod Açıklaması:
- İşlevlerini kullanmak için algoritma başlık dosyasını ekleyin.
- İşlevlerini kullanmak için iostream başlık dosyasını ekleyin.
- İşlevlerini kullanmak için liste başlığı dosyasını ekleyin.
- main() fonksiyonunu çağırın. Program mantığı bu fonksiyonun gövdesine eklenmelidir.
- 4 tam sayıdan oluşan my_list adlı bir liste oluşturun.
- 11. öğeyi my_list adlı listenin önüne ekleyin.
- 18. öğeyi my_list adlı listenin sonuna ekleyin.
- Bir yineleyici oluşturun ve bunu my_list listesinden 10. öğeyi bulmak için kullanın.
- Yukarıdaki öğenin bulunup bulunmadığını belirlemek için if ifadesini kullanın.
- Eğer bulunursa, 21. elemanı yukarıdaki elemanın önüne ekleyin.
- If ifadesinin gövdesinin sonu.
- Bir x döngü değişkeni oluşturmak için for döngüsünü kullanın. Bu değişken liste öğeleri üzerinde yineleme yapmak için kullanılacaktır.
- Listenin değerlerini konsola yazdırın.
- For döngüsünün gövdesinin sonu.
- Main() işlevinin gövdesinin sonu.
Listeden Silme
Bir listedeki öğeleri silmek mümkündür. Erase () işlevi, bir listeden bir öğeyi veya bir dizi öğeyi silmenize olanak tanır.
- Tek bir öğeyi silmek için bir tam sayı konumunu iletmeniz yeterlidir. Öğe silinecek.
- Bir aralığı silmek için başlangıç ve bitiş yineleyicilerini iletirsiniz. Bunu gösterelim.
Örnek 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;
}
Çıktı:
İşte kodun ekran görüntüsü:
Kod Açıklaması:
- İşlevlerini kullanmak için algoritma başlık dosyasını ekleyin.
- İşlevlerini kullanmak için iostream başlık dosyasını ekleyin.
- İşlevlerini kullanmak için liste başlığı dosyasını ekleyin.
- Sınıflarını çağırmadan kullanmak için programımıza std ad alanını ekleyin.
- main() fonksiyonunu çağırın. Program mantığı bu fonksiyonun gövdesine eklenmelidir.
- 4 tam sayıdan oluşan my_list adlı bir liste oluşturun.
- Konsola bir miktar metin yazdırın.
- Bir x döngü değişkeni oluşturmak için for döngüsünü kullanın. Bu değişken liste öğeleri üzerinde yineleme yapmak için kullanılacaktır.
- Listenin değerlerini konsola yazdırın.
- For döngüsünün gövdesinin sonu.
- Listenin ilk öğesine işaret eden bir yineleyici i oluşturun.
- Yineleyici i tarafından işaret edilen delete() işlevini kullanın.
- Konsola bir miktar metin yazdırın.
- Bir x döngü değişkeni oluşturmak için for döngüsünü kullanın. Bu değişken liste öğeleri üzerinde yineleme yapmak için kullanılacaktır.
- Listenin değerlerini konsola yazdırın. Bu, silme işleminden sonra gelir.
- For döngüsünün gövdesinin sonu.
- Program başarılı bir şekilde tamamlandığında bir değer döndürmelidir.
- Main() işlevinin gövdesinin sonu.
ÖZET
- std::list bir saklama kabıdır.
- Öğelerin herhangi bir yerden sabit zamanda eklenmesine ve silinmesine olanak tanır.
- Çift bağlantılı olarak uygulanır
- std::list verilerine çift 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 öğelerini farklı bellek parçalarına dağıtabilirsiniz.
- Çalışma zamanı sırasında std::list'i her iki uçtan da gerektiği gibi daraltabilir veya genişletebilirsiniz.
- Std::list'e öğe eklemek için insert() işlevini kullanırız.
- Std::listedeki öğeleri silmek için, delete() fonksiyonunu kullanırız.






