Şablonlar ve Standart Şablon Kütüphanesi
Şablonlar kod tekrarını azaltan, veri tipini fonksiyon ve sınıflara parametre olarak ileten basit fakat önemli bir yazılım tekniğidir. Şablon kullanımı ile farklı veri türleri için aynı kodun yazılması gerekmez. Örneğin şablon kullanarak bir yazılımda farklı veri türleri için Sirala() fonksiyonuna ihtiyaç varsa her değişik veri tipi için sıralama fonksiyonunun yeniden yazılmasını gerek kalmaz. Şablon tekniğinde bir Sirala() şablon fonksiyonu yazılarak veri tipi fonksiyona parametre olarak aktarılır. Programlar derleme zamanında şablon kullanım türüne uygun fonksiyonlar üretir. Sınıf ve fonksiyonlar için şablon yazılabilir.
Standart şablon kütüphanesi yaygın olarak bilinen ismiyle STL, bütün C ++ derleyicilerinde bulunan bir yazılım kütüphanesidir. Depolar, algoritmalar ve iteratörler standart şablon kütüphanesinin temel kavramlarıdır.
Depolar belirli bir türdeki nesneleri bir arada tutan ve yöneten saklayıcı nesnelerdir. Sıralı, ilişkisel ve dönüştürücü depolar olmak üzere üç gruba ayrılırlar.
Sıralı depolar, aynı tipteki verileri yerleştirme zamanına ve yerleştirme konumuna göre sıralı tutan veri yapılarıdır. Sıralama verinin konumundan ve büyüklüğünden bağımsızdır. Sıralı depoların tanımlayıcı bir özelliği, verinin bulunacağı sıranın kullanıcı tarafından belirlenmesidir. vector, deque ve list sıralı depolardır.
İlişkisel depolarda veriler büyüklüklerine ve deponun sıralama ölçütüne göre sıralanır. İlişkisel depolar set ve map depolar olmak üzere iki grupta incelenir. Aynı verinin depoda birden fazla bulunabildiği ilişkisel depo yapıları multiset ve multimap depolardır. set depolar verileri büyüklüklerine göre sıralar. map depolar ise verileri anahtar bir değerle beraber tutar.
Sıralı ve ilişkisel depolara ek olarak C ++ dilinde stack, queue ve priority_ queue depo dönüştürücüleri vardır. Depo dönüştürücüler diğer tiplerdeki depoları sarmalayan yapılardır. Depo dönüştürücüler, sıralı ve ilişkisel depoların aksine iteratörleri desteklemezler.
İteratörler, sıralı ve ilişkisel depolardaki verilere erişim için kullanılan nesnelerdir. İteratörler depoların bellek adreslerini işaret ederler. Bir iteratör değişkenin önüne * işareti konularak iteratörün işaret ettiği değere erişilir.
Standart şablon kütüphanesi algoritmaları depo içeriğini başlatma, sıralama, arama ve dönüştürme işlemlerini gerçekleştiren fonksiyon kütüphanesidir. C++ Standart şablon algoritmaları depo elemanlarına iteratörler üzerinden ulaşırlar.