std::set
Sıralı benzersiz ögeler
std::set, CoddyKit'te ücretsiz bir C++ Academy dersidir. Bu, 4 dersinin 2. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, C++ Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. C++ Academy kursu toplamda 4 dersten oluşur.
std::set Nedir?
std::set, benzersiz öğeleri sıralı düzende depolar. Yinelenen öğe yoktur ve aramalar logaritmik zamanda gerçekleştirilir.
- Anahtarlar aynı zamanda değerlerdir.
- Üyelik denetimleri ve yinelenenleri kaldırma için idealdir.
#include <iostream>
#include <set>
int main() {
std::set<int> s{3, 1, 2, 1, 3};
for (int x : s) std::cout << x << ' ';
std::cout << '\n';
return 0;
}Değer Ekleme
Öğe eklemek için insert() kullanın. Zaten var olan bir değeri ekleme girişimi basitçe yok sayılır.
#include <iostream>
#include <set>
int main() {
std::set<std::string> s;
s.insert("apple");
s.insert("banana");
s.insert("apple");
std::cout << s.size() << " unique items\n";
return 0;
}Ekleme Dönüş Değeri
insert(), .second alanı eklemenin gerçekten gerçekleşip gerçekleşmediğini bildiren bir bool olan bir pair döndürür.
#include <iostream>
#include <set>
int main() {
std::set<int> s{1, 2};
auto r = s.insert(2);
std::cout << std::boolalpha << "inserted: " << r.second << '\n';
auto r2 = s.insert(5);
std::cout << "inserted: " << r2.second << '\n';
return 0;
}Üyelik Denetimi
Bir değerin mevcut olup olmadığını test etmek için count() veya C++20'deki contains() işlevini kullanın.
#include <iostream>
#include <set>
int main() {
std::set<int> s{10, 20, 30};
std::cout << s.count(20) << '\n';
std::cout << s.count(99) << '\n';
return 0;
}Öğeleri Bulma
find(), eşleşen öğeye yönelik bir yineleyici, öğe yoksa end() döndürür.
#include <iostream>
#include <set>
int main() {
std::set<std::string> s{"red", "green", "blue"};
auto it = s.find("green");
std::cout << (it != s.end() ? "found" : "missing") << '\n';
return 0;
}Öğeleri Silme
erase(), bir değeri anahtarına göre kaldırır ve kaç öğenin kaldırıldığını (0 veya 1) döndürür.
#include <iostream>
#include <set>
int main() {
std::set<int> s{1, 2, 3, 4};
s.erase(3);
for (int x : s) std::cout << x << ' ';
std::cout << '\n';
return 0;
}Sıralı Düzen
Öğeler, hangi sırayla eklenmiş olurlarsa olsunlar, her zaman artan sırada dolaşılır.
#include <iostream>
#include <set>
int main() {
std::set<int> s{50, 10, 40, 20, 30};
for (int x : s) std::cout << x << ' ';
std::cout << '\n';
return 0;
}Verilerdeki Yinelemeleri Kaldırma
Değerleri bir kümeye aktarmak, yinelemeleri kaldırmanın ve aynı anda sıralama yapmanın hızlı bir yoludur.
#include <iostream>
#include <set>
#include <vector>
int main() {
std::vector<int> v{4, 2, 4, 1, 2, 3, 1};
std::set<int> unique(v.begin(), v.end());
for (int x : unique) std::cout << x << ' ';
std::cout << '\n';
return 0;
}lower_bound ve upper_bound
Küme sıralı olduğundan lower_bound() ve upper_bound() aralıkları verimli biçimde bulmanızı sağlar.
#include <iostream>
#include <set>
int main() {
std::set<int> s{10, 20, 30, 40, 50};
auto lo = s.lower_bound(20);
auto hi = s.upper_bound(40);
for (auto it = lo; it != hi; ++it) std::cout << *it << ' ';
std::cout << '\n';
return 0;
}Boyut ve Temizleme
size() öğe sayısını bildirir, empty() hiç öğe olmadığını denetler ve clear() her şeyi kaldırır.
#include <iostream>
#include <set>
int main() {
std::set<int> s{1, 2, 3};
std::cout << s.size() << '\n';
s.clear();
std::cout << std::boolalpha << s.empty() << '\n';
return 0;
}Aralık Ekleme
Başka bir kapsayıcıdaki tüm bir aralığı ekleyebilirsiniz; yinelenenler otomatik olarak kaldırılır ve öğeler sıralanır.
#include <iostream>
#include <set>
int main() {
std::set<int> s{1, 2, 3};
int more[] = {3, 4, 5};
s.insert(more, more + 3);
for (int x : s) std::cout << x << ' ';
std::cout << '\n';
return 0;
}Kısa Kontrol
std::set davranışını anlayıp anlamadığınızı test edin.
Özet
std::set'in:
- benzersiz ve sıralı değerleri tuttuğunu
- yinelenen eklemeleri sessizce yok saydığını
find,count,eraseve sıralılower_bound/upper_boundsorgularını desteklediğini
öğrendiniz. Sırada, yinelenenlere izin veren multimap ve multiset ile tanışacaksınız.
Sıkça Sorulan Sorular
“std::set” dersi ücretsiz mi?
Evet — “std::set” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve C++ Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. C++ Academy kursu toplamda 4 dersten oluşur.
“std::set” dersinde ne öğreneceğim?
Sıralı benzersiz ögeler C++ Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
C++ Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te C++ Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 2. dersidir.
“std::set” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu C++ Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her C++ Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.