Üç Yönlü Karşılaştırma Operatörü C++20
Kısa ve tutarlı karşılaştırmalar için uzay gemisi operatörü kullanın
Üç Yönlü Karşılaştırma Operatörü C++20, CoddyKit'te ücretsiz bir C++ Academy dersidir. Bu, 4 dersinin 4. 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.
Uzay Gemisi Operatörü <=>
C++20, üç yönlü karşılaştırma operatörünü <=> kullanıma sundu. Tek bir operatör, derleyiciye altı ilişkisel operatörün tamamını oluşturmak için gereken bilgiyi sağlar.
Dönüş Türleri: Üç Kategori
Dönüş türü, sıralama gücüne bağlıdır:
std::strong_ordering— eşdeğer değerleri birbirinden ayırt edilebilirstd::weak_ordering— eşdeğer, ancak birbirinden ayırt edilebilir değerler (örneğin büyük-küçük harfe duyarsızlık)std::partial_ordering— bazı değerler karşılaştırılamaz (örneğin NaN)
Varsayılan Karşılaştırma
En yaygın kalıp şudur: üyeleri sözlük sırasına göre karşılaştırarak derleyiciden <=> operatörünü oluşturmasını istemek.
struct Point {
int x;
int y;
auto operator<=>(const Point& other) const = default;
};
Point a{1, 2}, b{1, 3};
bool less = (a < b); // true — auto-generatedTek Satırda Altısının Tamamı
<=> operatörünü varsayılan hâle getirmek == operatörünü de varsayılan hâle getirir. Birlikte !=, <, <=, >, >= operatörlerini oluştururlar; altısının tamamı tek satırda.
Özel <=> Uygulaması
Özel karşılaştırma mantığı için gövdeyi kendiniz yazın.
std::strong_ordering operator<=>(const Person& other) const {
if (auto c = name <=> other.name; c != 0) return c;
return age <=> other.age;
}Sonucu Kullanma
<=> sonucunu, ihtiyacınız olan boole denetimi için sabit 0 ile karşılaştırabilirsiniz.
if ((a <=> b) < 0) std::cout << "a less\n";
if ((a <=> b) == 0) std::cout << "equal\n";
if ((a <=> b) > 0) std::cout << "a greater\n";Kayan Noktalı Sayılar ve partial_ordering
NaN değerlerini işlemek için kayan noktalı sayılarda std::partial_ordering kullanın; NaN ile karşılaştırma unordered sonucu verir.
struct Measurement {
double value;
std::partial_ordering operator<=>(const Measurement&) const = default;
};Zayıf Sıralama Örneği
Değerler birbirinden ayırt edilebilir olsa da karşılaştırıldıklarında eşit sayılabiliyorsa zayıf sıralama kullanın; büyük-küçük harfe duyarsız dizeler buna örnektir.
Özel == Uygulamasını Bağımsız Tanımlama
<=> operatörünü varsayılan hâle getirip özel bir == operatörü yazabilirsiniz; bazen eşitlik kuralları sıralama kurallarından farklıdır.
Eski Kodu Taşıma
Sınıfınızda daha önce birçok karşılaştırma operatörü varsa, C++20'ye geçerken bunları varsayılan bir <=> operatörüyle değiştirin. Çok daha az kodla aynı anlamı elde edersiniz.
<=> Ne Zaman Kullanılmamalı
Yalnızca eşitliğin önemli olduğu türlerde (sıralama yoksa) sadece operator== ve operator!= sağlayın; ikincisi C++20'de otomatik olarak oluşturulur.
Performans Notu
Derleyici, varsayılan <=> operatörünü elle yazılmış karşılaştırmalar kadar verimli şekilde iyileştirebilir. Uzay gemisi operatörünü kullanmanın çalışma zamanı ek yükü yoktur.
Kısa Kontrol
NaN içerebilen kayan noktalı türlerde karşılaştırma hangi dönüş kategorisini kullanmalıdır?
Özet
C++20 <=> operatörü, tek bir tanımdan altı ilişkisel operatörün tamamını oluşturur. Üyeleri sözlük sırasına göre karşılaştırması için onu varsayılan hâle getirin. Türünüzün anlamına göre güçlü, zayıf veya kısmi sıralamayı seçin.
Sıkça Sorulan Sorular
“Üç Yönlü Karşılaştırma Operatörü C++20” dersi ücretsiz mi?
Evet — “Üç Yönlü Karşılaştırma Operatörü C++20” 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.
“Üç Yönlü Karşılaştırma Operatörü C++20” dersinde ne öğreneceğim?
Kısa ve tutarlı karşılaştırmalar için uzay gemisi operatörü kullanın 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 4. dersidir.
“Üç Yönlü Karşılaştırma Operatörü C++20” 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.
Bu kursun tüm dersleri
- Aritmetik ve Karşılaştırma Operatörleri
- Akışa Ekleme ve Akıştan Çıkarma Operatörleri
- Alt Simge ve İşlev Çağrısı Operatörleri
- Üç Yönlü Karşılaştırma Operatörü C++20