STL Referansı
STL Referansı, C++ programlama dilinde yaygın olarak kullanılan Standart Şablon Kütüphanesi’nin (Standard Template Library) kapsamlı bir rehberidir. STL, veri yapıları, algoritmalar ve iteratörlerden oluşan güçlü bir araç seti sunar ve bu sayede yazılım geliştiriciler, kodu daha hızlı, güvenli ve yeniden kullanılabilir şekilde oluşturabilir. C++’ta STL, vektörler, listeler, kümeler ve haritalar gibi konteynerleri, bunları manipüle eden algoritmaları ve veri üzerinde gezinmeyi sağlayan iteratörleri içerir. STL kullanımı, programlama sürecinde performans optimizasyonu, bellek yönetimi ve hata önleme açısından kritik öneme sahiptir. Bu referansta, okuyucu STL’nin temel kavramlarını, C++ sözdizimini, nesne yönelimli programlama ilkelerini ve algoritma tasarım tekniklerini detaylı bir şekilde öğrenir. Ayrıca STL’nin yazılım geliştirme ve sistem mimarisi içerisindeki rolünü anlayarak, büyük ölçekli ve modüler C++ projelerinde etkili bir şekilde kullanmayı öğrenir.
Temel Örnek
text\#include <iostream>
\#include <vector>
\#include <algorithm>
int main() {
std::vector<int> sayilar = {1, 2, 3, 4, 5};
std::cout << "Orijinal sayılar: ";
for (int n : sayilar) {
std::cout << n << " ";
}
std::cout << std::endl;
std::reverse(sayilar.begin(), sayilar.end());
std::cout << "Ters çevrilmiş sayılar: ";
for (auto it = sayilar.begin(); it != sayilar.end(); ++it) {
std::cout << *it << " ";
}
std::cout << std::endl;
return 0;
}
Bu temel örnekte, std::vector konteyneri ve std::reverse algoritması kullanılmıştır. Vector, dinamik bir dizi yapısıdır ve eleman ekleme, silme gibi işlemleri verimli bir şekilde sağlar. std::reverse algoritması, iteratörler aracılığıyla vektörün elemanlarını tersine çevirir. İlk döngüde range-based for kullanılarak okunabilirlik artırılmış, ikinci döngüde ise klasik iteratör yöntemi gösterilmiştir. auto anahtar kelimesi, derleyicinin değişken tipini otomatik olarak belirlemesini sağlar ve tip hatalarını azaltır. Bu örnek, STL’nin konteyner ve algoritmaları birleştirerek güvenli, verimli ve sürdürülebilir kod yazmayı nasıl sağladığını göstermektedir.
Pratik Örnek
text\#include <iostream>
\#include <map>
\#include <string>
\#include <algorithm>
class Ogrenci {
public:
std::string isim;
int notu;
Ogrenci(std::string i, int n) : isim(i), notu(n) {}
};
int main() {
std::map\<std::string, Ogrenci> ogrenciler;
ogrenciler\["A101"] = Ogrenci("Ayşe", 85);
ogrenciler\["B202"] = Ogrenci("Mehmet", 92);
ogrenciler\["C303"] = Ogrenci("Fatma", 78);
auto maxIt = std::max_element(ogrenciler.begin(), ogrenciler.end(),
[](const auto& a, const auto& b) { return a.second.notu < b.second.notu; });
if (maxIt != ogrenciler.end()) {
std::cout << "En yüksek not: " << maxIt->second.isim
<< " - " << maxIt->second.notu << std::endl;
}
return 0;
}
Advanced C++ Implementation
text\#include <iostream>
\#include <vector>
\#include <set>
\#include <algorithm>
\#include <memory>
class Gorev {
public:
std::string aciklama;
int oncelik;
Gorev(std::string a, int o) : aciklama(a), oncelik(o) {}
};
int main() {
std::vector\<std::shared_ptr<Gorev>> gorevler;
gorevler.push_back(std::make_shared<Gorev>("Modül Tasarımı", 2));
gorevler.push_back(std::make_shared<Gorev>("Uygulama", 1));
gorevler.push_back(std::make_shared<Gorev>("Kod İnceleme", 3));
std::sort(gorevler.begin(), gorevler.end(), [](const auto& a, const auto& b) {
return a->oncelik < b->oncelik;
});
std::cout << "Öncelik sırasına göre görevler: " << std::endl;
for (const auto& g : gorevler) {
std::cout << g->aciklama << " - Öncelik: " << g->oncelik << std::endl;
}
std::set<int> oncelikler;
for (const auto& g : gorevler) {
oncelikler.insert(g->oncelik);
}
std::cout << "Benzersiz öncelikler: ";
for (int o : oncelikler) {
std::cout << o << " ";
}
std::cout << std::endl;
return 0;
}
STL’yi etkili kullanmak için doğru konteyner seçimi, algoritmaların verimli uygulanması ve akıllı işaretçilerle bellek yönetimi kritik öneme sahiptir. Yaygın hatalar arasında iteratör kaybı, büyük konteynerlerin verimsiz dolaşılması ve istisna yönetiminin hatalı yapılması bulunur. Performansı artırmak için, set ile benzersiz elemanlar yönetilir, vector hızlı erişim sağlar ve gereksiz kopyalardan kaçınılır. Const ve smart pointer kullanımı, bellek güvenliğini sağlar ve olası sızıntıları önler. STL, modern ve yüksek performanslı projelerde ölçeklenebilir, güvenli ve sürdürülebilir kod geliştirmeye olanak tanır.
📊 Kapsamlı Referans
C++ Element/Method | Description | Syntax | Example | Notes |
---|---|---|---|---|
vector | Dinamik dizi | std::vector<Type> v; | std::vector<int> v={1,2,3}; | İndeks ile erişim |
vector::push_back | Eleman ekle | v.push_back(val); | v.push_back(4); | Ortalama O(1) |
vector::size | Eleman sayısı | v.size(); | size_t n=v.size(); | O(1) |
vector::begin | Başlangıç iteratörü | v.begin(); | auto it=v.begin(); | Algoritmalar için |
vector::end | Bitiş iteratörü | v.end(); | auto it=v.end(); | Algoritmalar için |
vector::erase | Eleman sil | v.erase(it); | v.erase(v.begin()); | Orta kısım O(n) |
vector::insert | Eleman ekle | v.insert(it,val); | v.insert(v.begin()+1,10); | Orta kısım O(n) |
vector::clear | Temizle | v.clear(); | v.clear(); | Belleği boşaltır |
vector::empty | Boş mu? | v.empty(); | if(v.empty()) ... | O(1) |
vector::front | İlk eleman | v.front(); | int x=v.front(); | Referans döner |
vector::back | Son eleman | v.back(); | int y=v.back(); | Referans döner |
list | Çift bağlı liste | std::list<Type> l; | std::list<int> l={1,2,3}; | Hızlı ekleme ve silme |
📊 Complete C++ Properties Reference
Property | Values | Default | Description | C++ Support |
---|---|---|---|---|
allocator | std::allocator<T> | Varsayılan | Bellek yönetimi | C++98+ |
iterator | random, bidirectional, forward | Konteynere bağlı | İteratör türü | C++98+ |
reverse_iterator | ters uyumlu | n/a | Ters iteratör | C++98+ |
emplace | emplace_back, emplace_front | n/a | Verimli ekleme | C++11+ |
capacity | size, capacity | 0 | Mevcut kapasite | C++98+ |
max_size | size_t | Maksimum | Eleman sayısı sınırı | C++98+ |
hash | std::hash | n/a | unordered konteynerler | C++11+ |
compare | operator< | n/a | Karşılaştırma fonksiyonu | C++98+ |
swap | std::swap | n/a | İçeriği değiştir | C++98+ |
thread_safe | yes/no | no | İş parçacığı güvenliği | C++11+ |
STL Referansı, C++’ta yüksek performanslı ve güvenli kod geliştirmek için temel bir araçtır. Konteynerler, iteratörler ve algoritmaların etkin kullanımı, ölçeklenebilir ve sürdürülebilir projeler geliştirmeye olanak tanır. Bu referansın tamamlanmasının ardından, C++17/20 özellikleri, çok iş parçacıklı programlama ve performans optimizasyon teknikleri üzerinde çalışmak ileri düzey yetkinlik kazandıracaktır.
🧠 Bilginizi Test Edin
Bilginizi Test Edin
Bu interaktif sınavla kendini test et ve konuyu ne kadar iyi anladığını gör
📝 Talimatlar
- Her soruyu dikkatle okuyun
- Her soru için en iyi cevabı seçin
- Quiz'i istediğiniz kadar tekrar alabilirsiniz
- İlerlemeniz üstte gösterilecek