0Pricing
C++ Academy · Ders

Yaygın Yineleyici Kalıpları: begin, end, advance

std::begin, std::end, std::advance ve ters yineleyicileri etkili biçimde kullanın

Yaygın Yineleyici Kalıpları: begin, end, advance, 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.

begin() ve end()

Her standart kapsayıcı begin() (ilk öğe) ve end() (son öğeden bir sonraki) işlevlerini sunar. Yarı açık [begin, end) aralığı, yinelemenin standart yoludur.

std::vector<int> v = {1, 2, 3};
for (auto it = v.begin(); it != v.end(); ++it) {
    std::cout << *it << " ";
}

std::begin ve std::end

<iterator> içinde bulunan ve C dizileri de dâhil olmak üzere her kapsayıcıyla çalışan bağımsız işlevlerdir.

int arr[] = {1, 2, 3, 4};
for (auto it = std::begin(arr); it != std::end(arr); ++it) {
    std::cout << *it << " ";
}

cbegin ve cend

c sürümleri const_iterator döndürür. Değişiklik yapmanız gerekmediğinde ve derleyicinin bunu zorunlu kılmasını istediğinizde kullanın.

rbegin ve rend

Ters yineleyicilerdir. rbegin() son öğeyi, rend() ise ilk öğeden bir öncesini gösterir.

for (auto it = v.rbegin(); it != v.rend(); ++it) {
    std::cout << *it << " ";
}

std::next ve std::prev

Özgün yineleyiciyi değiştirmeden, başka bir yineleyiciden belirli bir uzaklıkta bulunan bir yineleyici döndürür.

auto it = v.begin();
auto next3 = std::next(it, 3);     // it + 3
auto prev1 = std::prev(it);         // it - 1

std::advance

Bir yineleyiciyi belirli bir uzaklık kadar yerinde değiştirir. Kategoriye göre en iyi uygulamayı seçer.

auto it = v.begin();
std::advance(it, 5);          // moves it forward by 5

std::distance

İki yineleyici arasındaki adım sayısını ölçer. Rastgele erişimde O(1), diğer durumlarda O(n) karmaşıklığındadır.

auto d = std::distance(v.begin(), it);   // index of it

Ekleme Yineleyicileri

Atama işlemini eklemeye dönüştüren uyarlayıcılardır:

  • std::back_inserter — push_back
  • std::front_inserter — push_front
  • std::inserter — bir konuma ekler
std::vector<int> dst;
std::copy(src.begin(), src.end(), std::back_inserter(dst));

Akış Yineleyicileri

std::istream_iterator ve std::ostream_iterator ile akışları aralıklar gibi kullanın.

// Read all ints from cin, print to cout
std::copy(
    std::istream_iterator<int>(std::cin),
    std::istream_iterator<int>{},
    std::ostream_iterator<int>(std::cout, " ")
);

Yineleme Sırasında Silme

Silme işlemi, bir sonraki geçerli yineleyiciyi döndürür. Bu yineleyiciyi alıp yeniden kullanın.

for (auto it = v.begin(); it != v.end(); ) {
    if (*it < 0) it = v.erase(it);
    else         ++it;
}

Yineleyicilerin Geçersiz Kılınması

Bir kapsayıcıyı değiştirmek, kapsayıcının yineleyicilerini geçersiz kılabilir. Vektörlerde boyut değiştirme sırasında yineleyiciler geçersiz olur; listeler, silinen öğelere ait olanlar dışında yineleyicileri geçerli tutar.

Hızlı Kontrol

Bir kapsayıcının son öğesinden sonraki konumu gösteren yineleyiciyi hangi işlev döndürür?

Özet

İleri yönde yineleme için begin()/end(), ters yönde yineleme için rbegin()/rend() kullanın. std::next, std::prev, std::advance ve std::distance genel biçimde çalışır. Ekleme yineleyicileri atama işlemini eklemeye uyarlar.

Sıkça Sorulan Sorular

“Yaygın Yineleyici Kalıpları: begin, end, advance” dersi ücretsiz mi?

Evet — “Yaygın Yineleyici Kalıpları: begin, end, advance” 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.

“Yaygın Yineleyici Kalıpları: begin, end, advance” dersinde ne öğreneceğim?

std::begin, std::end, std::advance ve ters yineleyicileri etkili biçimde 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 2. dersidir.

“Yaygın Yineleyici Kalıpları: begin, end, advance” 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