C++, yeni başlayan biri olarak karşılaşabileceğiniz en güçlü ve göz korkutucu programlama dillerinden biridir. Nedeni oldukça basit. İstenilen çıktıyı elde etmek için çok fazla kod gerektirir. Standart şablon kitaplığı veya STL, bu bilmeceyi çözmenize yardımcı olabilir.

Sıralama ve arama gibi işlevler için kod yazarken harcanan zaman ve emek göz önüne alındığında STL, tüm bu işlemleri tek bir kod satırı ile gerçekleştirmenize yardımcı olabilir. Bu kütüphane, problem çözme ve teknik görüşme hazırlığı için son derece yararlı olabilir.

Standart Şablon Kitaplığı Nedir?

Standart Şablon Kitaplığı veya STL, önceden oluşturulmuş işlevlerden ve kapsayıcılardan oluşan bir C++ kitaplığıdır. Vektörler, yığınlar, kuyruklar gibi yaygın veri yapıları için bazı belirgin şablon sınıfları ve programlamayı kolaylaştırmak için ikili arama gibi bazı kullanışlı algoritmik işlevler içerir.

C++'daki Standart Şablon Kitaplığı dört bileşenden oluşur:

  1. algoritmalar
  2. Konteynerler
  3. Fonksiyonlar
  4. yineleyiciler

Algoritmalara ve kapsayıcılara daha derinlemesine bakalım, çünkü bunlar STL'nin en sık kullanılan bileşenleridir.

instagram viewer

STL'de Algoritmalar

başlık dosyası, manuel olarak kodlamak yerine kullanılabilecek birkaç algoritmik işlevden oluşan STL'nin bir parçasıdır. Dahil edilen algoritmalardan bazıları, son derece yararlı olan ikili arama, sıralama ve tersine çevirmedir.

Başlamak için, içe aktarmanız gerekir. C++ dosyanızdaki başlık. Sözdizimi aşağıdaki gibidir:

#Dahil etmek 

Yaklaşan yöntemler için, örnek olarak {6, 2, 9, 1, 4} değerlerine sahip bir dizi değişkenini düşünün.

int dizi[] = {6, 2, 9, 1, 4};

çeşit()

çeşit() işlevi, belirtilen veri yapısı içindeki tüm öğeleri artan düzende sıralamanıza yardımcı olur. Bu işlev iki parametre alır: başlangıç ​​yineleyici ve bitiş yineleyici.

İlişkili: Birleştirme Sıralama Algoritmasına Giriş

Sözdizimi:

sıralama (start_iterator, end_iterator);

İşte hızlı bir örnek:

sırala (dizi, dizi+5);
için (int i = 0; ben < 5; ben++) {
cout << dizi[i] << " ";
}

Çıktı:

1 2 4 6 9

tersine çevirmek()

tersine çevirmek() işlevi, belirtilen veri yapısındaki öğelerin sırasını tersine çevirir. İki parametre kabul eder: başlangıç ​​yineleyici ve bitiş yineleyici.

Sözdizimi:

ters (start_iterator, end_iterator);

Yukarıdaki yöntem için kısa bir örnek:

ters (dizi, dizi+5);
için (int i = 0; ben < 5; ben++) {
cout << dizi[i] << " ";
}

Çıktı:

4 1 9 2 6

*min_element() ve *max_element()

Fonksiyonlar *max_element() ve *min_element() sırasıyla belirtilen veri yapısı içindeki maksimum ve minimum değeri döndürür. Bu işlevlerin her ikisi de iki bağımsız değişkeni kabul eder: başlangıç ​​yineleyici ve bitiş yineleyici.

Sözdizimi:

*max_element (start_iterator, end_iterator);
*min_element (start_iterator, end_iterator);

Bu işlevlerin örnek dizide çağrıldığında hangi değerleri döndürdüğünü bulalım:

cout << *max_element (dizi, dizi+5) << endl;
cout << *min_element (dizi, dizi+5) << endl;

Çıktı:

9
1

Ikili arama()

Ikili arama() Yöntem, belirtilen değerin veri yapısı içinde bulunup bulunmadığını bulmak için kullanılır. Üç bağımsız değişkeni kabul eder: başlangıç ​​yineleyici, bitiş yineleyici ve bulmak istediğiniz değer.

İkili arama yalnızca sıralanmış veri yapılarında çalışır. Bu nedenle, aramanız gerekecek çeşit() yöntemden önce ilk Ikili arama() yöntem.

Sözdizimi:

ikili_search (start_iterator, end_iterator, value_to_find)

İşte bu yöntemin bir gösterimi:

sırala (dizi, dizi+5);
ikili_search (dizi, dizi+5, 2)? cout << "Öğe bulundu": cout << "Öğe bulunamadı";
ikili_search (dizi, dizi+5, 7)? cout << "Öğe bulundu": cout << "Öğe bulunamadı";

Çıktı:

Öğe bulundu
Öğe bulunamadı

Miktar()

Miktar() yöntem, veri yapısı içinde belirtilen değerin oluşum sayısını döndürür. Üç bağımsız değişken alır: başlangıç ​​yineleyici, bitiş yineleyici ve sayılacak değer.

Sözdizimi:

saymak (start_iterator, end_iterator, value_to_count);

İşte bu yöntemin bir örneği:

cout << say (dizi, dizi+5, 2) << endl;

Çıktı:

1

STL'deki konteynerler

Kapsayıcılar, nesneleri ve verileri depolayan veri yapılarıdır. Vektörler, listeler, yığınlar, sıralar, kümeler ve haritalar, belirtilen ilkel veri türüne göre veri depolayan örneklerden bazılarıdır. Bu kapsayıcıları, ilgili başlıklarını C++ dosyasına içe aktararak kullanabilirsiniz.

Container değişkenini başlatırken, aşağıdaki gibi ilkel verilerden bahsetmeniz gerekir. int, karakter, dize içinde <> parantez.

Bu kaplardan bazılarını daha ayrıntılı olarak inceleyelim:

Vektör

Vektörler, yeniden boyutlandırılabilir ve birlikte çalışmak için esnek olan dinamik dizilerdir. Vektöre bir öğe eklediğinizde veya vektörden bir öğe sildiğinizde, vektörün boyutunu otomatik olarak ayarlar. Bu şuna benzer ArrayList veri yapısı Java'da.

Sözdizimi:

#Dahil etmek 
vektör değişken ismi;

İşte bazı önemli vektör yöntemleri:

  1. push_back (değer): Bu yöntem, verileri vektöre ekler.
  2. pop_back(): Bu yöntem, vektörden son öğeyi kaldırır.
  3. ekle (dizin, değer): Bu yöntem, belirtilen konumdaki öğeden önce yeni öğeler ekler.
  4. boyut(): Bu yöntem, vektörün boyutunu döndürür.
  5. boş(): Bu yöntem vektörün boş olup olmadığını kontrol eder.
  6. ön(): Bu yöntem, vektörün ilk değerini döndürür.
  7. geri(): geri yöntemi, vektörün son değerini döndürür.
  8. (dizin) adresinde: Bu yöntem, belirtilen konumdaki değeri döndürür.
  9. sil (dizin): silme yöntemi, verilen dizinden öğeleri kaldırır.
  10. açık(): Bu yöntem vektördeki tüm öğeleri temizler.
vektör < int > v = { 23, 12, 56, 10 };
v.push_back (5);
v.push_back (25);
v.pop_back();
auto i = v.insert (v.begin() + 1, 7);
cout << "Verilen vektörün boyutu" << v.size() << endl;
if (v.empty()) {
cout << "Vektör boş" << endl;
} Başka {
cout << "Vektör boş değil" << endl;
}
cout << "İlk konumdaki eleman " << v.front() << endl;
cout << "Son konumdaki eleman " << v.back() << endl;
cout << "Belirtilen konumdaki eleman " << v.at (4) << endl;
v.silme (v.begin() + 1);
için (int i = 0; ben < v.boyut(); ben++) {
cout << v[i] << " ";
}

Çıktı:

Verilen vektörün boyutu 6
Vektör boş değil
İlk konumdaki eleman 23'tür
Son konumdaki eleman 5'tir.
Verilen konumdaki eleman 10'dur
23 12 56 10 5

sıra

Kuyruk veri yapısında, elemanlar arkadan eklenir ve önden silinir. Bu nedenle, FIFO ("ilk giren ilk çıkar") yaklaşımını takip eder.

Sözdizimi:

#Dahil etmek 
sıra değişken ismi;

İşte bazı önemli kuyruk yöntemleri:

  1. itin (değer): Bu yöntem, kuyruğa öğeler ekler.
  2. pop(): Bu yöntem, kuyruğun ilk öğesini siler.
  3. boyut(): Bu yöntem, kuyruğun boyutunu döndürür.
  4. ön(): Bu yöntem, kuyruğun ilk öğesini döndürür.
  5. geri(): Bu yöntem, kuyruğun son öğesini döndürür.
kuyruk < int > q;
q.push (30);
q.push (40);
q.push (50);
q.push (60);
q.push (70);
cout << "İlk öğe " << q.front() << endl;
cout << "Son eleman " << q.back() << endl;
cout << "Kuyruğun boyutu " << q.size() << endl;
q.pop();
cout << "Kuyruğun tüm öğelerini yazdırma" << endl;
while (!q.empty()) {
cout << q.front() << " ";
q.pop();
}

Çıktı:

İlk eleman 30
son eleman 70
Kuyruğun boyutu 5
Kuyruğun tüm öğelerini yazdırma
40 50 60 70

yığın

Yığın kapsayıcıları LIFO yöntemiyle çalışır. LIFO, "son giren ilk çıkar" anlamına gelir. Veriler aynı uçtan itilir ve açılır.

Sözdizimi:

#Dahil etmek 
yığın değişken ismi;

İşte bazı önemli yığın yöntemleri:

  1. itin (değer): Bu yöntem, öğeyi yığına iter.
  2. pop(): Bu yöntem yığının üst öğesini siler.
  3. üst(): Bu yöntem, yığına girilen son öğenin değerini döndürür.
  4. boyut(): Bu yöntem yığının boyutunu döndürür.
  5. boş(): Bu yöntem yığının boş olup olmadığını kontrol eder.
yığın < int > s;
s.itme (30);
s.itme (40);
s.push (50);
s.push (60);
cout << "Yığının en üstünde " << s.top() << endl;
s.pop();
cout << "Pop işlemi gerçekleştirdikten sonra yığının üstü: " << s.top() << endl;
cout << "Yığının tüm öğeleri yazdırılıyor" << endl;
while (!s.empty()) {
cout << s.top() << " ";
s.pop();
}

Çıktı:

Yığının üst kısmı 60 içerir
Pop işlemi gerçekleştirdikten sonra yığının üstü: 50
Yığının tüm öğelerini yazdırma
50 40 30

Ayarlamak

Küme kapları benzersiz değerleri tutmak için kullanılır ve öğenin değeri kümeye eklendikten sonra değiştirilemez. Kümedeki tüm öğeler sıralı bir şekilde saklanır. Set kapsayıcı şuna benzer: Python'da veri yapısını ayarla.

Sözdizimi:

#Dahil etmek 
Ayarlamak değişken ismi;

İşte bazı önemli küme yöntemleri:

  1. eklemek (değer): Bu yöntem, kümeye öğeler ekler.
  2. başla(): Bu yöntem, yineleyiciyi kümenin ilk öğesine döndürür.
  3. son(): Bu yöntem, yineleyiciyi kümenin son öğesine döndürür.
  4. boyut(): Bu yöntem, kümenin boyutunu döndürür.
  5. boş(): Bu metot, kümenin boş olup olmadığını kontrol eder.
  6. bul (değer): Bu yöntem, yineleyiciyi parametrede geçirilen öğeye döndürür. Öğe bulunamazsa, bu işlev yineleyiciyi kümenin sonuna döndürür.
  7. silmek (değer): Bu yöntem, belirtilen öğeyi kümeden siler.
< int > s ayarlayın;
s.insert (20);
s.insert (30);
s.insert (40);
s.insert (50);
s.insert (60);
s.insert (60);
s.insert (60);
otomatik i = s.begin();
cout << "Birinci konumdaki eleman" << * i << endl;
cout << "Kümenin boyutu" << s.size() << endl;
s.find (20) != s.end()? cout << "Öğe bulundu" << endl: cout << "Öğe bulunamadı" << endl;
s.silme (30);
cout << "Tüm öğeleri yazdırma" << endl;
for (auto i = s.begin(); ben != s.end(); ben++) {
cout << * ben << " ";
}

Çıktı:

İlk konumdaki eleman 20
Setin boyutu 5
Öğe bulundu
Tüm öğeleri yazdırma
20 40 50 60

C++ Zor Olmaz

Diğer tüm becerilerde olduğu gibi, STL'den en iyi şekilde yararlanmak için pratik yapmak çok önemlidir. Bu kapsayıcılar ve algoritmalar zamandan tasarruf etmenize yardımcı olabilir ve kullanımı kolaydır. Yukarıda gösterilen örnekleri uygulayarak başlayın ve sonunda onu kendi projelerinizde de kullanmaya başlayacaksınız.

Ancak, C++'ı ilk kez öğreniyorsanız, STL'yi anlamaya geçmeden önce temel bilgileri öğrenerek başlayın.

E-posta
C++ Programlama Nasıl Öğrenilir: Başlamak için 6 Site

C++ öğrenmek ister misiniz? Hem yeni başlayanlar hem de deneyimli programcılar için en iyi C++ web siteleri ve çevrimiçi kursları burada.

Sonrakini Oku

İlgili konular
  • Programlama
  • Kodlama Eğitimleri
  • Fonksiyonel Programlama
Yazar hakkında
Nitin Ranganath (22 Makale Yayımlandı)

Nitin, JavaScript teknolojilerini kullanarak web uygulamaları geliştiren hevesli bir yazılım geliştiricisi ve bilgisayar mühendisliği öğrencisidir. Serbest web geliştiricisi olarak çalışıyor ve boş zamanlarında Linux ve Programlama için yazmayı seviyor.

Nitin Ranganath'dan Daha Fazla

Haber bültenimize abone ol

Teknik ipuçları, incelemeler, ücretsiz e-kitaplar ve özel fırsatlar için bültenimize katılın!

Bir adım daha…!

Lütfen size az önce gönderdiğimiz e-postadaki e-posta adresinizi onaylayın.

.