0Pricing
C++ Academy · Pelajaran

unordered_set

Elemen unik berbasis hash

unordered_set 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.

Apa Itu unordered_set?

std::unordered_set menyimpan elemen unik dalam tabel hash. Pemeriksaan keanggotaan rata-rata membutuhkan waktu konstan, tetapi tidak ada urutan terurut.

#include <iostream>
#include <unordered_set>

int main() {
    std::unordered_set<int> s{1, 2, 3, 2, 1};
    std::cout << s.size() << " unique values\n";
    return 0;
}

set atau unordered_set

Seperti pada map:

  • set: terurut, O(log n).
  • unordered_set: tidak terurut, rata-rata O(1).

Pilih unordered_set untuk pemeriksaan keanggotaan tercepat.

#include <iostream>
#include <unordered_set>

int main() {
    std::unordered_set<std::string> seen{"a", "b", "c"};
    std::cout << (seen.count("b") ? "yes" : "no") << '\n';
    return 0;
}

Menyisipkan Nilai

insert() menambahkan elemen, mengabaikannya jika sudah ada, dan mengembalikan pasangan yang bagian .second-nya memberi tahu apakah elemen tersebut ditambahkan.

#include <iostream>
#include <unordered_set>

int main() {
    std::unordered_set<int> s;
    auto a = s.insert(5);
    auto b = s.insert(5);
    std::cout << std::boolalpha << a.second << ' ' << b.second << '\n';
    return 0;
}

Pemeriksaan Keanggotaan Cepat

Memeriksa apakah Anda pernah melihat suatu nilai adalah kasus penggunaan klasik. count() mengembalikan 0 atau 1.

#include <iostream>
#include <unordered_set>

int main() {
    std::unordered_set<std::string> blocked{"spam", "junk"};
    std::cout << blocked.count("spam") << '\n';
    std::cout << blocked.count("ok") << '\n';
    return 0;
}

Menghapus Elemen

erase() menghapus sebuah nilai dan mengembalikan jumlah yang dihapus (0 atau 1).

#include <iostream>
#include <unordered_set>

int main() {
    std::unordered_set<int> s{1, 2, 3};
    s.erase(2);
    std::cout << "count 2: " << s.count(2) << '\n';
    std::cout << "size: " << s.size() << '\n';
    return 0;
}

Mendeteksi Duplikat

Anda dapat mendeteksi duplikat pertama dalam aliran dengan menyisipkan elemen dan memeriksa hasil boolean.

#include <iostream>
#include <unordered_set>

int main() {
    int data[] = {3, 7, 1, 7, 9};
    std::unordered_set<int> seen;
    for (int x : data) {
        if (!seen.insert(x).second) {
            std::cout << "first duplicate: " << x << '\n';
            break;
        }
    }
    return 0;
}

Melakukan Iterasi

Iterasi berfungsi, tetapi urutannya tidak ditentukan. Jumlahkan atau proses elemen tanpa mengasumsikan urutan apa pun.

#include <iostream>
#include <unordered_set>

int main() {
    std::unordered_set<int> s{10, 20, 30};
    int total = 0;
    for (int x : s) total += x;
    std::cout << "sum = " << total << '\n';
    return 0;
}

Menghapus Duplikat dari Rentang

Buat unordered_set dari suatu rentang untuk menghapus duplikat dengan cepat (urutan tidak dipertahankan).

#include <iostream>
#include <unordered_set>
#include <vector>

int main() {
    std::vector<int> v{1, 2, 2, 3, 3, 3};
    std::unordered_set<int> u(v.begin(), v.end());
    std::cout << u.size() << " unique\n";
    return 0;
}

find atau count

find() memberi Anda iterator ke elemen sehingga Anda dapat menggunakannya lebih lanjut, sedangkan count() hanya melaporkan keberadaan elemen.

#include <iostream>
#include <unordered_set>

int main() {
    std::unordered_set<std::string> s{"alpha", "beta"};
    auto it = s.find("beta");
    std::cout << (it != s.end() ? *it : "none") << '\n';
    return 0;
}

Mengosongkan dan Memeriksa Kekosongan

clear() menghapus semua elemen dan empty() memeriksa apakah tidak ada elemen.

#include <iostream>
#include <unordered_set>

int main() {
    std::unordered_set<int> s{1, 2, 3};
    s.clear();
    std::cout << std::boolalpha << s.empty() << '\n';
    return 0;
}

Irisan Set

Untuk menemukan elemen yang sama, lakukan perulangan pada salah satu set dan periksa keanggotaannya pada set lainnya.

#include <iostream>
#include <unordered_set>

int main() {
    std::unordered_set<int> a{1, 2, 3, 4};
    std::unordered_set<int> b{3, 4, 5};
    for (int x : a) if (b.count(x)) std::cout << x << ' ';
    std::cout << '\n';
    return 0;
}

Pemeriksaan Singkat

Uji pemahaman Anda tentang unordered_set.

Ringkasan

Anda telah mempelajari bahwa std::unordered_set:

  • menyimpan elemen unik dengan operasi rata-rata O(1)
  • tidak memiliki urutan yang dijamin
  • ideal untuk pemeriksaan keanggotaan dan deteksi duplikat yang cepat

Selanjutnya, Anda akan belajar melakukan hash pada tipe buatan sendiri.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “unordered_set” gratis?

Ya — teks lengkap “unordered_set” 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 “unordered_set”?

Elemen unik berbasis hash 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 “unordered_set” 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. std::unordered_map
  2. unordered_set
  3. Fungsi Hash Kustom
  4. Pertimbangan Performa
← Kembali ke C++ Academy