STL stack C++’da bir yığın veri yapısının işlevselliğini sağlar.

Yığın veri yapısı aşağıdaki gibidir LIFO (Last In First Out) prensip. Yani, en son eklenen eleman önce kaldırılacaktır.

Yığın Veri Yapısı

Yığınlar hakkında daha fazla bilgi edinmek için öğreticimizi ziyaret edin. Stack Data Structure.

Oluşturmak Stack

C++’da bir yığın oluşturmak için önce şunları eklememiz gerekir: stack başlık dosyası.

#include <stack>

Bu dosyayı içe aktardığımızda, oluşturabiliriz stack aşağıdaki sözdizimini kullanarak:

stack<type> st;

Burada, type Bu komutu yığında saklamak istediğimiz veri türünü belirtir. Örneğin,

// create a stack of integers
 stack<int> integer_stack; 
// create a stack of strings
stack<string> string_stack;

Örnek: C++ STL Yığını

#include <iostream>

#include <stack>

using namespace std;

int main {
    // create a stack of strings

stack<string> languages;

    
    // add element to the Stack
    languages.push("C++");
    languages.push("Java");
    languages.push("Python");
    
    // print top element
    cout << languages.top;

    return 0;
}

Output

Python

Yukarıdaki örnekte oluşturduğumuz stack diller olarak adlandırılan dizelerin .

Burada, kullandık push yığına eleman eklemek için. o zaman kullandık top üst öğeyi görüntülemek için

hakkında daha fazla şey öğreneceğiz push ve top öğreticide daha sonra.

Yığın Yöntemleri

C++’da, stack class, bir yığın üzerinde farklı işlemler gerçekleştirmek için çeşitli yöntemler sağlar.

Operasyon Tanım
push yığına bir eleman ekler
pop yığından bir öğeyi kaldırır
top yığının en üstündeki öğeyi döndürür
size yığındaki öğelerin sayısını döndürür
empty İadeler true yığın boşsa

Yığına Öğe Ekle

Kullanırız push bir yığına bir öğe eklemek için. Örnek olarak,

#include <iostream>

#include <stack>

using namespace std;

int main {

  // create a stack of strings
  stack<string> colors;

// öğeleri yığına itin colors.push(“Red”); colors.push(“Orange”);

  
  cout << "Stack: ";

  // print elements of stack
   while(!colors.empty) {
    cout << colors.top << ", ";
    colors.pop;
  }
 
  return 0;
}

Output

Stack: Orange, Red, 

Yukarıdaki örnekte, renkler adı verilen bir dizi dizi oluşturduk. Sonra, kullandık push yığına eleman eklemek için.

colors.push("Red");
colors.push("Orange");

Yığın içeriğini doğrudan yazdırmak yerine, kullandık while döngü ve çeşitli yığın yöntemleri.

while(!colors.empty) {
  cout << colors.top << ", ";
  colors.pop;
}

Yığının tüm öğelerini yazdırmak için, top element ve daha sonra pop(çıkarın) döngünün içinde. Bu işlem yığın boşalana kadar tekrar tekrar devam eder.

hakkında öğreneceğiz pop, top ve empty gelecek bölümlerde.

Ayrıca öğeleri şu sırayla eklediğimize dikkat edin: {“Red”, “Orange”}.

Ancak öğeleri yazdırırken, {“Orange”, “Red”}.

Bunun nedeni, yığının bir LIFO veri yapısı olmasıdır; bu, en son eklenen öğenin önce alındığı anlamına gelir.

Not: Vektörlerin veya diğer kapsayıcıların aksine, menzilli bir for bir yığın boyunca yinelemek için döngü. Bunun nedeni, STL yığınının, standart bir yığın veri yapısı gibi davranmasını sağlamak için kısıtlayıcı erişim sağlayan bir STL Kapsayıcı Bağdaştırıcısı olmasıdır.

Öğeleri Kaldır Stack

kullanarak bir elemanı yığından kaldırabiliriz. pop. Örnek olarak,

#include <iostream>
#include <stack>
using namespace std;

// function prototype this command this command for display_stack utility
void display_stack(stack<string> st);

int main {

  // create a stack of strings
  stack<string> colors;

  // push elements into the stack
  colors.push("Red");
  colors.push("Orange");
  colors.push("Blue");
  
  cout << "Initial Stack: ";
  // print elements of stack
  display_stack(colors);

// ” kaldırırBlue” olarak son renkler.pop eklenmiş;

  
  cout << "Final Stack: ";

  // print elements of stack
  display_stack(colors);
  
  return 0;
}

// utility function to display stack elements
void display_stack(stack<string> st) {

  while(!st.empty) {
    cout << st.top << ", ";
    st.pop;
  }

  cout << endl;
}

Output

Initial Stack: Blue, Orange, Red, 
Final Stack: Orange, Red,

Yukarıdaki örnekte kullandığımız pop yığından bir öğeyi kaldırmak için.

Başlangıçta, yığının içeriği {“Blue”, “Orange”, “Red”}.

Sonra kullandık pop öğeyi kaldırmak için.

// removes top element
colors.pop 

Bu, üstteki öğeyi kaldırır stack yani en son eklenen eleman, ki bu “Blue”.

Bu nedenle, son yığın olur {“Orange”, “Red”}.

Öğelere şuradan erişin Stack

Yığının en üstündeki öğeye şunu kullanarak erişiriz: top. Örnek olarak,

#include <iostream>
#include <stack>
using namespace std;

int main {

  // create a stack of strings
  stack<string> colors;

  // push element into the stack
  colors.push("Red");
  colors.push("Orange");
  colors.push("Blue");
  
  // get top element

string top = colors.top;

  cout << "Top Element: " << top;
  
  return 0;
}

Output

Top Element: Blue

Yukarıdaki örnekte, renkler adında bir dizi dizi oluşturduk ve aşağıdaki öğeleri ekledik: “Red”, “Orange” ve “Blue”.

o zaman kullandık top üst öğeye erişmek için:

string top = colors.top; 

Burada, “Blue” en son eklendi, bu yüzden top element.

Yığın Boyutunu Alın

Kullanırız size içindeki eleman sayısını almak için stack. Örnek olarak,

#include <iostream>
#include <stack>
using namespace std;

int main {

  // create a stack of int
  stack<int> prime_nums;

  // push elements into the stack
  prime_nums.push(2);
  prime_nums.push(3);
  prime_nums.push(5);

// yığının boyutunu al int size = prime_nums.size;

  cout << "Size of the stack: " << size;

  return 0;
}

Output

Size of the stack: 3

Yukarıdaki örnekte, prime_nums adında bir tamsayı yığını oluşturduk ve buna üç eleman ekledik.

Sonra kullandık size yığındaki öğelerin sayısını bulmak için:

prime_nums.size;

Yığına 3 eleman eklediğimiz için, prime_nums.size İadeler 3.

Yığının Boş olup olmadığını kontrol edin

Kullanırız empty yığının boş olup olmadığını kontrol etmek için. Bu yöntem şunu döndürür:

  • 1(true)– yığın boşsa
  • 0(false)– yığın boş değilse

Örnek olarak,

#include <iostream>
#include <stack>
using namespace std;

int main {

  // create a stack of double
  stack<double> nums;
  
  cout << "Is the stack empty? ";

// yığının boş olup olmadığını kontrol et if (nums.empty) {

    cout << "Yes" << endl;
  }
  else {
    cout << "No" << endl;
  }

  cout << "Pushing elements..." << endl;

  // push element into the stack
  nums.push(2.3);
  nums.push(9.7);
 
  cout << "Is the stack empty? ";

// yığının boş olup olmadığını kontrol et if (nums.empty) {

    cout << "Yes";
  }
  else {
    cout << "No";
  }

  return 0;
}

Output

Is the stack empty? Yes
Pushing elements...
Is the stack empty? No

Yukarıdaki örnekte kullandığımız empty olup olmadığını belirlemek için stack boş,

if(nums.empty) { // returns false
  cout << "Yes" << end;;
}
else {
  cout << "No" << endl; 
}

Başlangıçta, yığının içinde hiçbir öğe yoktur. Yani nums.empty İadeler true.

Daha sonra yığına elemanlar ekledik.

Yine, kullanıyoruz nums.empty yığının boş olup olmadığını belirlemek için. Bu sefer döner false.

hakkında bilgi yukarıdadır C++ Yığını Nasıl Kullanılır Yığınlar hakkında daha fazla bilgi edinmek için [Detailed Guide]. Herhangi bir sorunuz varsa, lütfen sorun fixsy.org aşağıdaki bir yorumda. Sana yardım etmekten mutluluk duyarım.