Yükleniyor...

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
TEXT Code
\#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
TEXT Code
\#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
TEXT Code
\#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

Başlamaya Hazır

Bilginizi Test Edin

Bu interaktif sınavla kendini test et ve konuyu ne kadar iyi anladığını gör

3
Sorular
🎯
70%
Geçmek İçin
♾️
Süre
🔄
Deneme

📝 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