byanigli
Hectopat
Daha fazla
- Cinsiyet
- Erkek
- Meslek
- student of software engineering
Elimizde, verileri tutan bir class olsun. Stack class'ı gibi. String için ayrı, int için ayrı, double için ayrı classlar mı oluşturmalıyım ? Tabii ki de hayır. Aynı fonksiyon template'lerinde olduğu gibi classlar içinde, farklı parametler tanımlayabiliriz.
1. Stack üzerinde çalışalım
Stack Elemanları :
Push(element) // stack'e veri ekler
pop () // stack üzerinden veri çıkarır
empty() stack'i elaman olup olmadığını kontrol eder.
Öncelikle bir template ve bir stack class belirlemeliyiz. Template'i belirler iken aynı, fonksiyonda belirlediğimiz gibi belirlenmektedir.
Cass'ın tüm methodlarını fonksiyon template olarak tanımlayacağız örnek olarak.
class Stack {
private:
std::vector<T> elems;
public:
Stack(); // constructor
void push (T const &b); // vektöre veri ekler.
void pop (); // vektörden veri çıkartır.
T top () const; // elementi return eder.
};[/CODE]
Bilindiği gibi methodları classın içinde veya dışında tanımlayabiliriz. Normal class mantığından biraz farklı olabilir. Sadece parametre belirtmeliyiz.
içerde tanımladığımızda aşagıdaki gibi kullanabiliriz.
Dışarda tanımlamak biraz farklı olabilir.
1. Stack üzerinde çalışalım
Stack Elemanları :
Push(element) // stack'e veri ekler
pop () // stack üzerinden veri çıkarır
empty() stack'i elaman olup olmadığını kontrol eder.
Öncelikle bir template ve bir stack class belirlemeliyiz. Template'i belirler iken aynı, fonksiyonda belirlediğimiz gibi belirlenmektedir.
Kod:
template < typname T>
class Stack {
};
Cass'ın tüm methodlarını fonksiyon template olarak tanımlayacağız örnek olarak.
class Stack {
private:
std::vector<T> elems;
public:
Stack(); // constructor
void push (T const &b); // vektöre veri ekler.
void pop (); // vektörden veri çıkartır.
T top () const; // elementi return eder.
};[/CODE]
Bilindiği gibi methodları classın içinde veya dışında tanımlayabiliriz. Normal class mantığından biraz farklı olabilir. Sadece parametre belirtmeliyiz.
içerde tanımladığımızda aşagıdaki gibi kullanabiliriz.
Kod:
void push (T &const elem)
{
elems.push_back(elem);
}
Dışarda tanımlamak biraz farklı olabilir.
Kod:
template <typename T>
void Stack<T>:: push (T &const elem)
{
elems.push_back(elem);
}