0Pricing
C++ Academy · Pelajaran

Modifikasi: transform, copy_if, replace

Transformasikan, saring, dan ganti elemen dengan algoritma standar

Modifikasi: transform, copy_if, replace 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.

Algoritma yang Memodifikasi

Algoritma ini menulis ke rentang keluaran — baik di tempat maupun melalui iterator tujuan.

std::copy

Salin suatu rentang ke rentang lain. Rentang keluaran harus cukup besar atau Anda harus menyediakan penyisip.

#include <algorithm>
#include <iterator>
std::vector<int> src = {1, 2, 3};
std::vector<int> dst;
std::copy(src.begin(), src.end(), std::back_inserter(dst));

std::copy_if

Salin elemen yang cocok dengan suatu predikat.

std::vector<int> evens;
std::copy_if(src.begin(), src.end(),
    std::back_inserter(evens),
    [](int x) { return x % 2 == 0; });

std::transform

Terapkan suatu fungsi pada setiap elemen dan tulis hasilnya. Mirip dengan map dalam bahasa lain.

std::vector<int> v = {1, 2, 3};
std::vector<int> sq;
std::transform(v.begin(), v.end(),
    std::back_inserter(sq),
    [](int x) { return x * x; });
// sq is {1, 4, 9}

transform Dua Rentang

Gabungkan dua rentang masukan dengan fungsi biner.

std::vector<int> a = {1, 2, 3};
std::vector<int> b = {10, 20, 30};
std::vector<int> sum;
std::transform(a.begin(), a.end(), b.begin(),
    std::back_inserter(sum), std::plus<int>{});
// sum is {11, 22, 33}

std::replace dan std::replace_if

Ganti elemen yang sama dengan suatu nilai (atau yang cocok dengan suatu predikat) di tempat.

std::vector<int> v = {1, 2, 3, 2};
std::replace(v.begin(), v.end(), 2, 99);
// v is {1, 99, 3, 99}

std::fill

Tetapkan setiap elemen dalam suatu rentang ke sebuah nilai.

std::vector<int> v(5);
std::fill(v.begin(), v.end(), 42);
// v is {42, 42, 42, 42, 42}

std::generate

Tetapkan setiap elemen ke hasil pemanggilan suatu fungsi. Berguna untuk membuat urutan.

std::vector<int> v(5);
int n = 0;
std::generate(v.begin(), v.end(), [&]() { return n++; });
// v is {0, 1, 2, 3, 4}

std::iota

Dari <numeric> — mengisi suatu rentang dengan nilai yang meningkat secara berurutan.

#include <numeric>
std::vector<int> v(5);
std::iota(v.begin(), v.end(), 10);
// v is {10, 11, 12, 13, 14}

std::reverse

Membalik urutan elemen dalam suatu rentang secara langsung.

std::vector<int> v = {1, 2, 3, 4};
std::reverse(v.begin(), v.end());
// v is {4, 3, 2, 1}

std::rotate

Memutar elemen sehingga elemen pada middle menjadi elemen pertama yang baru. Elemen pertama semula dipindahkan ke akhir wilayah yang diputar.

Erase-Remove dengan std::remove

remove menggeser elemen yang tidak diinginkan ke belakang dan mengembalikan iterator ke akhir logis yang baru. Pasangkan dengan erase agar ukurannya benar-benar diperkecil.

v.erase(
    std::remove(v.begin(), v.end(), 0),
    v.end()
);

Pemeriksaan Singkat

Algoritme mana yang paling sesuai untuk "menerapkan sebuah fungsi ke setiap elemen dan membangun wadah baru"?

Ringkasan

Algoritme yang memodifikasi menuliskan hasil: copy, copy_if, transform, replace, fill, generate, iota, reverse, rotate, dan idiom erase-remove.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Modifikasi: transform, copy_if, replace” gratis?

Ya — teks lengkap “Modifikasi: transform, copy_if, replace” 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 “Modifikasi: transform, copy_if, replace”?

Transformasikan, saring, dan ganti elemen dengan algoritma standar 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 “Modifikasi: transform, copy_if, replace” 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. Algoritma Tanpa Modifikasi: find, count, all_of
  2. Modifikasi: transform, copy_if, replace
  3. Pengurutan dan Partisi: sort, stable_partition
  4. Algoritma Numerik: accumulate, reduce, transform_reduce
← Kembali ke C++ Academy