0Pricing
C++ Academy · Ders

C++20 Ranges Kütüphanesine Giriş

İkili yineleyiciler yerine aralıkları alan std::ranges algoritmalarını kullanın

C++20 Ranges Kütüphanesine Giriş, CoddyKit'te ücretsiz bir C++ Academy dersidir. Bu, 4 dersinin 3. 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.

Aralıklar Neden Kullanılır?

Geleneksel STL, yineleyici çiftleri alır (v.begin(), v.end()). C++20 aralıkları tek bir aralık değeri alır ve birleştirilebilirlik ekler.

Aralıkları Dâhil Etme

<ranges> başlığını dâhil edin. Algoritmalar için std::ranges, tembel görünümler için std::views ad alanlarını kullanın.

#include <ranges>
#include <algorithm>

Aralık Algoritmaları

Her standart algoritmanın, iki yineleyici yerine bir aralık alan bir aralık karşılığı vardır.

std::vector<int> v = {3, 1, 4, 1, 5};
std::ranges::sort(v);             // sort the whole range
auto it = std::ranges::find(v, 4);

İzdüşüm İşlevleri

Aralık algoritmaları isteğe bağlı bir izdüşüm kabul eder; bu, karşılaştırmadan önce her öğeye uygulanan bir işlevdir. Özel karşılaştırıcılar yazma gereğini ortadan kaldırır.

struct Person { std::string name; int age; };
std::vector<Person> people;
std::ranges::sort(people, {}, &Person::age);
// sort by age, default comparison

Aralık Nedir?

Aralık, begin() ve end() işlevlerini destekleyen her şeydir. Kapsayıcılar, diziler ve (C++20'de) bir sonlandırıcı sunan her özel tür aralık olabilir.

Sonlandırıcılar

C++20, end() işlevini bir sonlandırıcı olarak genelleştirir; sonlandırıcının yineleyiciyle aynı türde olması gerekmez. Girdi akışları ve sonsuz aralıklar için kullanışlıdır.

Görünümler: Tembel Aralık İşlem Hatları

Görünüm, öğeleri gerektiğinde üreten ve sahiplik yapmayan bir aralıktır. Bunları boru operatörü | ile birleştirin.

auto squares = v
    | std::views::filter([](int x) { return x % 2 == 0; })
    | std::views::transform([](int x) { return x * x; });

for (int x : squares) std::cout << x << " ";

Tembel Değerlendirme

Görünümler, üzerinde yineleme yapılana kadar bellek ayırmaz veya çalışmaz. filter | transform | take(5) yalnızca dönüştürülmüş ilk 5 değeri üretir; daha fazlasını üretmez.

Ödünç Alınan Aralıklar ve Ömür

Görünümler, kaynak aralıklarından ödünç alır. Kaynak yok olursa görünüm sarkık hâle gelir. Geçici değerler üzerindeki görünümleri kullanırken dikkatli olun; ancak C++20 bazı güvenlik önlemleri eklemiştir.

Eager ve Tembel

Algoritmalar sonuçları hevesli biçimde üretir (hemen hesaplar). Görünümler tembeldir (yineleme sırasında hesaplar). Seçiminizi, sonucun somutlaştırılmış hâline ihtiyaç duyup duymadığınıza göre yapın.

Performans

Tembel işlem hatları ara kapsayıcılardan kaçınır. Derleyici, işlem hatlarını çoğu zaman tek bir döngüymüş gibi eniyileştirir. Doğrulamak için godbolt ile inceleyin.

Geçiş Yolu

C++20 kullanamıyorsanız Eric Niebler'ın range-v3 gibi kütüphaneleri aynı modeli C++14/17'de sağlar. Geçişi kolaylaştırmak için bugün öğrenmeye değerdir.

Hızlı Kontrol

C++20 aralıklarının yineleyici çifti kullanan STL tarzına göre temel avantajı nedir?

Özet

C++20 aralıkları STL algoritmalarını modernleştirir: tek bir aralık geçirin, izdüşümler kullanın ve görünümlerle tembel işlem hatları oluşturun. Boru operatörü, süzgeçleri, dönüştürmeleri ve ilk n öğeyi alma işlemlerini açık ve bildirime dayalı kodda birleştirir.

Sıkça Sorulan Sorular

“C++20 Ranges Kütüphanesine Giriş” dersi ücretsiz mi?

Evet — “C++20 Ranges Kütüphanesine Giriş” 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.

“C++20 Ranges Kütüphanesine Giriş” dersinde ne öğreneceğim?

İkili yineleyiciler yerine aralıkları alan std::ranges algoritmalarını 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 3. dersidir.

“C++20 Ranges Kütüphanesine Giriş” 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. Yineleyici Kategorileri: input, forward, bidirectional, random
  2. Yaygın Yineleyici Kalıpları: begin, end, advance
  3. C++20 Ranges Kütüphanesine Giriş
  4. Aralık Uyarlayıcıları: views::filter, views::transform, views::take
← C++ Academy Sayfasına Dön