Bir diğer Standart Template Library konterneri olan Set yapısı, benzersiz elamanları sıralı bir şekilde saklamamızı sağlar. Ancak set yapısı elemanları set içindeyken düzenlememize izin vermez. Elemanı önce silebilir sonra yeni ve düzenlenmiş halini ekleyebiliriz.
Set yapısını ne için kullanırız diye soracak olursak, yapmış olduğumuz hesaplamalar sonucu elde ettiğimiz verileri sıralı bir şekilde ekrana yazmak istersek ve geliştirmiş olduğumuz kod bloğunda bir de sıralama algoritmasıyla uğraşmak istemezsek, set yapısını kullanabilir ve set yapısının bizim yerimize yapmış olduğu sıralamadan faydalanabiliriz.
Örnekle açıklayacak olursak şu C++ kodunu inceleyebiliriz.
#include <functional> #include <iostream> #include <set> #include <iterator> int main(int argc, const char **argv) { // defining the set. std::set<int> s; // store the elements in decreasing sorted order. // std::set<int, std::greater<int>> s; // insterting random elements. s.insert(50); s.insert(30); s.insert(45); s.insert(55); s.insert(10); s.insert(25); // initialising the iterator, iterating to the beginning of the set. std::set<int>::iterator it; for( it = s.begin(); it != s.end(); it++ ) { std::cout << *it << " "; } std::cout << std::endl; std::cout << "The size of set: " << s.size() << std::endl; return 0; }
Bu kodu çalıştırdığımızda şu çıktıyı alırız;
10 25 30 45 50 55
The size of set: 6
Çıktıdan da anlayabileceğimiz gibi set yapısı içine eklediğimiz elemanları sıralı bir şekilde saklar.
Set yapısını kullanırken bazı yardımcı fonksiyonlar da vardır. Bunlar;
Fonksiyon | Açıklama |
begin(); | Set yapısının ilk elemanını verir. |
end(); | Set yapısının son elemanını verir. |
empty(); | Set yapısının boş olup olmadığını döner. |
size(); | Set yapısının eleman sayısını verir. |
erase(i); | Set yapısı içinde i ile belirtilen elemanı siler. |
insert(i); | Set yapısı içine i ile belirtilen elemanı ekler. |
clear(); | Set yapısı içindeki tüm elemanları siler. |
Bu fonksiyonlar dışında başka fonksiyonlara da sahip olan set yapısını daha detaylı bir şekilde şu linkten inceleyebilirsiniz.