Yükleniyor...

STL Container'ları

STL Container'ları (Standard Template Library Container'ları) C++’ta veri saklama, düzenleme ve yönetme için kullanılan önceden tanımlanmış veri yapılarıdır. Bunlar, programcıların karmaşık veri yapıları oluşturmak yerine hazır ve optimize edilmiş yapıları kullanmalarına olanak sağlar. STL Container'ları, yazılım geliştirmede verimlilik, güvenlik ve okunabilirlik sağlar; çünkü bellek yönetimi, algoritmalar ve veri erişimi standart bir şekilde sunulur.
C++ geliştirme sürecinde STL Container'ları, veri saklama ve yönetim ihtiyacı doğduğunda kullanılır. Örneğin, vektörler (vector) hızlı indeksleme ve rastgele erişim için uygundur; listeler (list) sık ekleme ve silme işlemleri için idealdir; map ve set ise hızlı arama ve benzersiz veri saklama için tercih edilir. Bu tutorial ile okuyucu, doğru konteyner seçimini, iteratör kullanımını ve STL algoritmalarını öğrenerek daha etkili ve hatasız kod yazmayı öğrenecek.
STL Container'ları ile programcılar, OOP prensiplerini kullanarak temiz ve sürdürülebilir C++ projeleri geliştirebilirler. Bu içerik, problem çözme, algoritmik düşünme ve performans optimizasyonu konularında gelişmiş bilgi sağlayarak, gerçek dünya yazılım projelerinde STL Container'larını etkin bir şekilde kullanabilmeyi hedefler.

Temel Örnek

text
TEXT Code
\#include <iostream>
\#include <vector>
\#include <list>
\#include <algorithm>

int main() {
// Vector: Dinamik dizi
std::vector<int> sayilar = {10, 20, 30, 40, 50};

// List: Çift bağlı liste
std::list<std::string> isimler = {"Ali", "Ayşe", "Mehmet"};

// Vector üzerinde range-based for ile gezinme
std::cout << "Vector elemanları: ";
for (const auto& s : sayilar) {
std::cout << s << " ";
}
std::cout << std::endl;

// List'e eleman ekleme
isimler.push_back("Can");

// List üzerinde iterator ile gezinme
std::cout << "List elemanları: ";
for (auto it = isimler.begin(); it != isimler.end(); ++it) {
std::cout << *it << " ";
}
std::cout << std::endl;

// Vector'ü büyükten küçüğe sıralama
std::sort(sayilar.begin(), sayilar.end(), std::greater<int>());
std::cout << "Sıralı vector: ";
for (const auto& s : sayilar) {
std::cout << s << " ";
}
std::cout << std::endl;

return 0;

}

Bu temel örnekte, vector ve list kullanımı gösterilmiştir. Vector, hızlı indeks erişimi sağlar; list ise sık ekleme ve silme işlemleri için uygundur. push_back ile yeni eleman eklenir ve range-based for ile vector üzerinde güvenli bir şekilde iterasyon yapılır. List için iterator kullanımı gösterilmiştir. std::sort algoritması vector elemanlarını büyükten küçüğe sıralar. Kod, referans kullanımı ile kopya oluşturmayı önler ve STL Container'larının bellek yönetimindeki avantajlarını gösterir. Bu yapı, projelerde hem güvenli hem de performanslı veri yönetimi sağlar.

Pratik Örnek

text
TEXT Code
\#include <iostream>
\#include <vector>
\#include <map>
\#include <algorithm>
\#include <string>

class Calisan {
public:
std::string isim;
int yas;
double maas;

Calisan(std::string i, int y, double m) : isim(i), yas(y), maas(m) {}

};

int main() {
// Vector ile Calisan objeleri
std::vector<Calisan> ekip = {
Calisan("Ali", 28, 6000),
Calisan("Ayşe", 35, 8000),
Calisan("Mehmet", 30, 7000)
};

// Map ile isim-maas eşleştirmesi
std::map<std::string, double> maaslar;
for (const auto& c : ekip) {
maaslar[c.isim] = c.maas;
}

// Vector'ü yaşa göre sıralama
std::sort(ekip.begin(), ekip.end(), [](const Calisan& a, const Calisan& b) {
return a.yas < b.yas;
});

std::cout << "Yaşa göre sıralı ekip:" << std::endl;
for (const auto& c : ekip) {
std::cout << c.isim << " (Yaş: " << c.yas << ", Maaş: " << c.maas << ")" << std::endl;
}

// Map ile maaş sorgulama
std::string aranan = "Ayşe";
if (maaslar.find(aranan) != maaslar.end()) {
std::cout << aranan << " Maaş: " << maaslar[aranan] << std::endl;
} else {
std::cout << aranan << " bulunamadı." << std::endl;
}

return 0;

}

Bu örnek, STL Container'larının gerçek dünya kullanımını gösterir. Vector, Calisan nesnelerini saklarken, map isimlere göre maaşlara hızlı erişim sağlar. Lambda fonksiyonu ile vector’ü yaşa göre sıralamak, STL algoritmalarının esnekliğini ortaya koyar. Range-based for ve iterator kullanımı kodun okunabilirliğini ve güvenliğini artırır. Map kullanımı, arama işlemlerinde performans sağlar ve bellek yönetimi otomatik olarak yapılır. Bu yöntemler, gelişmiş C++ projelerinde STL Container'larını etkin ve güvenli kullanmayı öğretir.

STL Container'ları ile çalışırken iyi uygulamalar şunlardır: doğru konteyner seçimi, algoritmaların STL üzerinden uygulanması ve iterator kullanımı. Vector hızlı erişim sağlar; list sık ekleme/silme; map ve set hızlı arama ve benzersiz veri sağlar.
Yaygın hatalar arasında raw pointer kullanımı, verimsiz algoritmalar ve range hataları bulunur. Debugging için iterator ve container sınırlarını kontrol edin. Optimize etmek için emplace kullanın ve algoritma karmaşıklığını göz önünde bulundurun. Güvenlik açısından verileri doğrulayın ve undefined behavior önleyin.

📊 Referans Tablosu

C++ Element/Concept Description Usage Example
vector Dinamik dizi, hızlı erişim std::vector<int> sayilar = {1,2,3};
list Çift bağlı liste, hızlı ekleme/silme std::list[std::string](std::string) isimler;
map Anahtar-değer, hızlı arama std::map[std::string,int](std::string,int) yaslar;
set Benzersiz ve sıralı eleman std::set<int> benzersiz_sayilar;
stack LIFO yapı std::stack<int> yigin;
queue FIFO yapı std::queue<int> kuyruk;

STL Container'ları, modern C++ geliştirme için vazgeçilmez araçlardır. Temel çıkarımlar, doğru konteyner seçimi, algoritmaların etkin kullanımı, OOP prensiplerinin uygulanması ve performans optimizasyonudur.
Bir sonraki adım olarak gelişmiş algoritmalar, iteratör tipleri, template kullanımı ve tasarım kalıpları öğrenilebilir. STL dokümantasyonunu takip etmek, projelerde güvenli ve etkili uygulamalar yapmayı sağlar.

🧠 Bilginizi Test Edin

Başlamaya Hazır

Test Your Knowledge

Test your understanding of this topic with practical questions.

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