0Pricing
C++ Academy · Pelajaran

Pola Iterator Umum: begin, end, advance

Gunakan std::begin, std::end, std::advance, dan iterator terbalik secara efektif

Pola Iterator Umum: begin, end, advance adalah pelajaran C++ Academy gratis di CoddyKit. Ini adalah pelajaran 2 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar C++ Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus C++ Academy mencakup 4 pelajaran total.

begin() dan end()

Setiap wadah standar menyediakan begin() (elemen pertama) dan end() (satu posisi setelah elemen terakhir). Rentang setengah terbuka [begin, end) adalah cara baku untuk melakukan iterasi.

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

std::begin dan std::end

Fungsi bebas dalam <iterator> yang bekerja pada wadah apa pun — termasuk array C.

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

cbegin dan cend

Versi c mengembalikan const_iterator. Gunakan saat Anda tidak perlu memodifikasi dan ingin kompilator memastikan hal tersebut.

rbegin dan rend

Iterator terbalik. rbegin() menunjuk ke elemen terakhir, sedangkan rend() menunjuk satu posisi sebelum elemen pertama.

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

std::next dan std::prev

Mengembalikan iterator dengan offset dari iterator lain tanpa memodifikasi iterator asli.

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

std::advance

Mengubah iterator di tempat berdasarkan suatu jarak. Memilih implementasi terbaik berdasarkan kategorinya.

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

std::distance

Mengukur jumlah langkah antara dua iterator. O(1) untuk akses acak, O(n) untuk kategori lainnya.

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

Iterator Penyisipan

Adaptor yang mengubah penugasan menjadi penyisipan:

  • std::back_inserter — push_back
  • std::front_inserter — push_front
  • std::inserter — menyisipkan pada suatu posisi
std::vector<int> dst;
std::copy(src.begin(), src.end(), std::back_inserter(dst));

Iterator Aliran

Gunakan aliran seperti rentang dengan std::istream_iterator dan std::ostream_iterator.

// 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, " ")
);

Menghapus Saat Melakukan Iterasi

Penghapusan mengembalikan iterator valid berikutnya. Simpan dan gunakan kembali iterator tersebut.

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

Invalidasi Iterator

Memodifikasi wadah dapat membatalkan iteratornya. Vector membatalkan iterator saat ukurannya diubah; list mempertahankan iterator tetap valid, kecuali iterator yang dihapus.

Pemeriksaan Singkat

Fungsi mana yang mengembalikan iterator yang menunjuk ke posisi setelah elemen terakhir suatu wadah?

Ringkasan

Gunakan begin()/end() untuk iterasi maju dan rbegin()/rend() untuk iterasi mundur. std::next, std::prev, std::advance, dan std::distance bekerja secara umum. Iterator penyisipan menyesuaikan penugasan menjadi penyisipan.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Pola Iterator Umum: begin, end, advance” gratis?

Ya — teks lengkap “Pola Iterator Umum: begin, end, advance” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus C++ Academy, upgrade ke CoddyKit PRO. Kursus C++ Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Pola Iterator Umum: begin, end, advance”?

Gunakan std::begin, std::end, std::advance, dan iterator terbalik secara efektif Kamu berlatih C++ Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai C++ Academy?

Tidak diperlukan pengalaman sebelumnya. C++ Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 2 dari 4.

Berapa lama pelajaran “Pola Iterator Umum: begin, end, advance” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran C++ Academy ini?

Ya. Setiap pelajaran C++ Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Kategori Iterator: input, forward, bidirectional, random
  2. Pola Iterator Umum: begin, end, advance
  3. Pengenalan Pustaka Ranges C++20
  4. Adaptor Rentang: views::filter, views::transform, views::take
← Kembali ke C++ Academy