0Pricing
C++ Academy · Ders

Üç 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 edilebilir
  • std::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-generated

Tek 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

  1. Aritmetik ve Karşılaştırma Operatörleri
  2. Akışa Ekleme ve Akıştan Çıkarma Operatörleri
  3. Alt Simge ve İşlev Çağrısı Operatörleri
  4. Üç Yönlü Karşılaştırma Operatörü C++20
← C++ Academy Sayfasına Dön