C++ STL
C++ içerisinde yer alan STL kütüphanesi nedir, ne işe yarar, nasıl kullanılır ve STL içerisinde yer alan vector kullanımı ile ilgili bilgiler yer alıyor.
C++ STL nedir?
C++ STL veya Standart Template Library içerisinde çeşitli algoritma, sınıf ve fonksiyonları barındıran Generic Programlama ile yazılmış şablon kütüphanesidir.
STL içindeki algoritma, sınıf ve fonksiyonların Generic Programlama ile yazılmış olması yazılan hazır işlevlerin tür bağımsız olarak kullanılmasını sağlar.
C++ içerisinde yer alan Generic Programlama yapısı hakkında detaylı bilgi için C++ Template yazıma bakmalısın.
C++ STL tarihçesi
STL kütüphanesi 1979 yılında Alexander Stepanov tarafından ADA programlama dili için yazılmıştır.
C++ dilinde bellek yönetiminin hızlı olmasından dolayı daha sonra C++ içinde yazılmıştır.
C++ dili için yazıldıktan sonra 1993 yılında ISO/ANSI tarafından standart olarak kabul edilmiştir.
C++ STL yapısı
C++ STL içerisindeki yapı temel olarak algoritmalar (algoritm), taşıyıcılar (Containers) ve döngüler (Iterators ) olmak üzere üçe ayrılır.
Algoritmaların içinde bilgisayar bilimlerinde yer alan sıralama (sort), arama (search) gibi çeşitli işlevler yer alır.
Taşıyıcı içinde verileri bilgisayar bilimlerinde yer alan dizi, bağlı liste, ileri yönlü bağlı liste, hash table gibi türden bağımsız saklamaya imkan verir.
Döngüler, Algoritmalar ve Taşıyıcılar arasında bağlantı kurarak önceden yazılmış algoritmaları taşıyıcılara uygulamaya imkan verir.
Örneğin; sort fonksiyonu taşıyıcıların ilk ve son değerini döngüler içerisinde yer alan begin ve end metodunu kullarak işlem yapar.
C++ STL kullanımı
C++ içerisinde yer alan STL kütüphanesi kullanmak için kullanılan her kütüphaneye ait başlık dosyasının eklenmesi gerekir.
Ancak bu işlem birden fazla STL kütüphanesinin kullanımında kod fazlalığına neden olabilir.
Bundan dolayı standart C++ başlık dosyalarının yer aldığı #include <bits/stdc++.h> dosyası kullanılabilir.
C++ STL örneği
C dili ile dinamik dizi yapısını oluşturmak yapmak çok zahmetliydi.
Her işlem için fonksiyon yazmak, türe göre fonksiyonları düzenlemek bunlardan birkaçıydı.
C++ STL içerisindeki vector kütüphanesi ile bu işlem aşağıdaki gibi kolay bir şekilde yapılabilir.
#include <iostream>
#include <vector> // Vector
#include <algorithm> // Sıralama (sort) algoritması
using namespace std;
int main()
{
vector<int> sayilar;
sayilar.push_back(90);
sayilar.push_back(10);
sayilar.push_back(40);
sayilar.push_back(20);
for (auto mevcut : sayilar)
{
cout << mevcut << " ";
}
cout << endl;
sort(sayilar.begin(), sayilar.end());
for (auto mevcut : sayilar)
{
cout << mevcut << " ";
}
return 0;
}
C++ STL içerisinde yer alan kütüphaneler Generic Programlama ile yazıldığından tür bağımsızdır.
Aşağıda C++ STL kütüphanesi string veri türü ile kullanılmıştır.
#include <iostream>
#include <vector> // Vector
#include <algorithm> // Sıralama (sort) algoritması
using namespace std;
int main()
{
vector<string> kisiler;
kisiler.push_back("Yusuf");
kisiler.push_back("Ramazan");
kisiler.push_back("Sinan");
kisiler.push_back("Mehmet");
for (auto mevcut : kisiler)
{
cout << mevcut << " ";
}
cout << endl;
sort(kisiler.begin(), kisiler.end());
for (auto mevcut : kisiler)
{
cout << mevcut << " ";
}
return 0;
}
NOT: Yukarıdaki kodların çalışması için en az C++11 destekleyen bir derleyicide derlenmesi gerekir.