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.
Mengenal iterator sebagai generalisasi pointer yang membuat satu algoritma bisa bekerja di semua container.
Buka → # Kategori IteratorLima 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 AdaptersAdapter iterator back_inserter, front_inserter, inserter, serta istream/ostream_iterator: membuat container tumbuh sendiri dan menghadirkan stream dalam algoritma.
Buka → # Algoritma Berbasis RentangMemahami konvensi [first, last) yang dipakai semua algoritma STL dan pola pemakaiannya, termasuk pratinjau std::ranges::.
Buka → # Sorting dengan std::sortMenyortir vector<int> dan vector<string> dengan std::sort, kompleksitasnya, serta pratinjau comparator dan stable_sort.
Buka → # Searching dengan std::findMencari elemen dengan std::find dan find_if, menafsirkan iterator yang dikembalikan, dan pola counting untuk menghitung kemunculan.
Buka → # Binary SearchPencarian logaritmik pada data terurut dengan std::binary_search, lower_bound, upper_bound, dan equal_range.
Buka → # min, max, dan minmax_elementMencari 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_ifMenghitung kemunculan nilai dan elemen yang lolos kondisi dengan std::count dan count_if, termasuk tipe kembalian ptrdiff_t.
Buka → # Algoritma copy dan moveMenyalin elemen dengan std::copy, copy_if, copy_n, memakai back_inserter, serta memindahkan elemen dengan algoritma std::move.
Buka → # std::transformMengubah setiap elemen lewat fungsi dengan std::transform — versi unary, binary, pemakaian in-place, dan kombinasi dengan back_inserter.
Buka → # Idiom remove-eraseMenghapus elemen dari vector dengan idiom erase(remove(...)) — mengapa std::remove tidak menghapus, dan modernisasi std::erase_if C++20.
Buka → # std::partition dan stable_partitionMembagi rentang menjadi dua kelompok menurut predikat dengan partition, stable_partition, dan mencari batasnya dengan partition_point.
Buka → # std::accumulate dan std::reduceMengagregasi 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 ComparatorMenulis comparator sendiri sebagai fungsi bebas, lambda, atau function object — dengan syarat strict weak ordering dan pola multi-kriteria.
Buka → # Function ObjectsFunctor sebagai class dengan operator(): state, penggunaan ulang, function object bawaan seperti std::greater, dan perbandingannya dengan lambda.
Buka → # Ranges dan ViewsMengolah 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 LanjutanMendalami projection pada algoritma ranges, membedah batasan comparator versus projection, serta memakai fitur C++23: ranges::to, views::zip, dan views::enumerate.
Buka →