Iterator menghubungkan container dengan algoritma sehingga kode kita lebih idiomatik dan ringkas. Kita memakai sort, find, transform, dan accumulate, lalu mengenal Ranges dan Views yang membawa gaya pipeline ke C++ modern.

# Konsep Iterator

Mengenal iterator sebagai generalisasi pointer yang membuat satu algoritma bisa bekerja di semua container.

Buka →
# Kategori Iterator

Lima kategori iterator — input, output, forward, bidirectional, dan random access — serta alasan algoritma menuntut kategori tertentu.

Buka →
# begin() dan end()

Member begin()/end() versus std::begin/std::end, dukungan array C-style, cbegin/cend, dan makna one past the last.

Buka →
# Iterator Adapters

Adapter iterator back_inserter, front_inserter, inserter, serta istream/ostream_iterator: membuat container tumbuh sendiri dan menghadirkan stream dalam algoritma.

Buka →
# Algoritma Berbasis Rentang

Memahami konvensi [first, last) yang dipakai semua algoritma STL dan pola pemakaiannya, termasuk pratinjau std::ranges::.

Buka →
# Sorting dengan std::sort

Menyortir vector<int> dan vector<string> dengan std::sort, kompleksitasnya, serta pratinjau comparator dan stable_sort.

Buka →
# Searching dengan std::find

Mencari elemen dengan std::find dan find_if, menafsirkan iterator yang dikembalikan, dan pola counting untuk menghitung kemunculan.

Buka →
# Binary Search

Pencarian logaritmik pada data terurut dengan std::binary_search, lower_bound, upper_bound, dan equal_range.

Buka →
# min, max, dan minmax_element

Mencari elemen terkecil dan terbesar dengan min_element, max_element, minmax_element, serta membandingkan dua nilai dengan std::min dan std::max.

Buka →
# std::count dan std::count_if

Menghitung kemunculan nilai dan elemen yang lolos kondisi dengan std::count dan count_if, termasuk tipe kembalian ptrdiff_t.

Buka →
# Algoritma copy dan move

Menyalin elemen dengan std::copy, copy_if, copy_n, memakai back_inserter, serta memindahkan elemen dengan algoritma std::move.

Buka →
# std::transform

Mengubah setiap elemen lewat fungsi dengan std::transform — versi unary, binary, pemakaian in-place, dan kombinasi dengan back_inserter.

Buka →
# Idiom remove-erase

Menghapus elemen dari vector dengan idiom erase(remove(...)) — mengapa std::remove tidak menghapus, dan modernisasi std::erase_if C++20.

Buka →
# std::partition dan stable_partition

Membagi rentang menjadi dua kelompok menurut predikat dengan partition, stable_partition, dan mencari batasnya dengan partition_point.

Buka →
# std::accumulate dan std::reduce

Mengagregasi rentang menjadi satu nilai dengan accumulate (fold kiri yang deterministik) dan reduce (ramah paralel), termasuk nilai awal dan operasi khusus.

Buka →
# Algoritma Numerik `<numeric>`

Mengisi deret dan mengagregasi pasangan elemen dengan iota, inner_product, partial_sum, dan adjacent_difference dari header numeric.

Buka →
# Custom Comparator

Menulis comparator sendiri sebagai fungsi bebas, lambda, atau function object — dengan syarat strict weak ordering dan pola multi-kriteria.

Buka →
# Function Objects

Functor sebagai class dengan operator(): state, penggunaan ulang, function object bawaan seperti std::greater, dan perbandingannya dengan lambda.

Buka →
# Ranges dan Views

Mengolah data dengan C++20 Ranges: merangkai view filter, transform, dan take menjadi pipeline, memahami lazy evaluation, serta memakai algoritma std::ranges:: yang lebih ringkas.

Buka →
# Projections dan Ranges Lanjutan

Mendalami projection pada algoritma ranges, membedah batasan comparator versus projection, serta memakai fitur C++23: ranges::to, views::zip, dan views::enumerate.

Buka →