0Pricing
C++ Academy · Pelajaran

std::unordered_map

Pencarian cepat berbasis hash

std::unordered_map adalah pelajaran C++ Academy gratis di CoddyKit. Ini adalah pelajaran 1 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_map?

std::unordered_map menyimpan pasangan kunci-nilai dalam tabel hash. Pencarian, penyisipan, dan penghapusan rata-rata membutuhkan waktu konstan, tetapi elemen tidak memiliki urutan terurut.

#include <iostream>
#include <unordered_map>

int main() {
    std::unordered_map<std::string, int> ages;
    ages["Alice"] = 30;
    ages["Bob"] = 25;
    std::cout << ages["Alice"] << '\n';
    return 0;
}

map atau unordered_map

Pilih berdasarkan kebutuhan:

  • map: terurut, operasi O(log n).
  • unordered_map: tidak terurut, operasi rata-rata O(1).

Gunakan unordered_map jika Anda hanya memerlukan pencarian cepat.

#include <iostream>
#include <unordered_map>

int main() {
    std::unordered_map<int, std::string> m{{3, "c"}, {1, "a"}, {2, "b"}};
    std::cout << m.size() << " entries (order not guaranteed)\n";
    return 0;
}

Menyisipkan dan Memperbarui

API-nya sama seperti map: gunakan [], insert(), atau emplace().

#include <iostream>
#include <unordered_map>

int main() {
    std::unordered_map<std::string, int> m;
    m["x"] = 1;
    m.insert({"y", 2});
    m.emplace("z", 3);
    std::cout << m.size() << '\n';
    return 0;
}

Pencarian dengan find

find() mengembalikan iterator atau end(). Cara ini mencegah penyisipan nilai bawaan secara tidak sengaja seperti yang dilakukan [].

#include <iostream>
#include <unordered_map>

int main() {
    std::unordered_map<std::string, int> m{{"a", 1}};
    auto it = m.find("a");
    if (it != m.end()) std::cout << it->second << '\n';
    std::cout << "size: " << m.size() << '\n';
    return 0;
}

Memeriksa Keberadaan

count() mengembalikan 0 atau 1, dan C++20 menambahkan contains() untuk pemeriksaan boolean yang jelas.

#include <iostream>
#include <unordered_map>

int main() {
    std::unordered_map<std::string, int> m{{"key", 99}};
    std::cout << m.count("key") << '\n';
    std::cout << m.count("missing") << '\n';
    return 0;
}

Melakukan Iterasi

Anda dapat melakukan iterasi, tetapi urutannya tidak ditentukan. Jangan pernah mengandalkan elemen yang terurut atau mengikuti urutan penyisipan.

#include <iostream>
#include <unordered_map>

int main() {
    std::unordered_map<std::string, int> m{{"a", 1}, {"b", 2}, {"c", 3}};
    int total = 0;
    for (const auto& [k, v] : m) total += v;
    std::cout << "sum = " << total << '\n';
    return 0;
}

Menghapus

erase() menghapus berdasarkan kunci dan mengembalikan jumlah yang dihapus.

#include <iostream>
#include <unordered_map>

int main() {
    std::unordered_map<std::string, int> m{{"a", 1}, {"b", 2}};
    m.erase("a");
    std::cout << m.count("a") << ' ' << m.size() << '\n';
    return 0;
}

Menghitung Frekuensi dengan Cepat

Untuk kumpulan data besar yang urutannya tidak penting, unordered_map menghitung frekuensi lebih cepat daripada map.

#include <iostream>
#include <unordered_map>
#include <string>

int main() {
    std::string items[] = {"a", "b", "a", "c", "b", "a"};
    std::unordered_map<std::string, int> freq;
    for (const auto& s : items) freq[s]++;
    std::cout << "a appears " << freq["a"] << " times\n";
    return 0;
}

Menggunakan at()

at() mengembalikan referensi dan melempar std::out_of_range jika kunci tidak ditemukan, tanpa pernah menyisipkan kunci.

#include <iostream>
#include <unordered_map>

int main() {
    std::unordered_map<std::string, int> m{{"score", 42}};
    std::cout << m.at("score") << '\n';
    return 0;
}

Penyisipan Bawaan melalui []

Mengakses kunci yang tidak ditemukan dengan [] akan menyisipkannya dengan nilai yang diinisialisasi berdasarkan nilai (0 untuk int). Berhati-hatilah, karena tindakan ini memperbesar map secara diam-diam.

#include <iostream>
#include <unordered_map>

int main() {
    std::unordered_map<std::string, int> m;
    std::cout << m["new"] << '\n';
    std::cout << "size: " << m.size() << '\n';
    return 0;
}

Mengosongkan Map

clear() mengosongkan tabel, dan empty() melaporkan apakah tabel tidak memiliki elemen.

#include <iostream>
#include <unordered_map>

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

Pemeriksaan Singkat

Uji pemahaman Anda tentang pengurutan unordered_map.

Ringkasan

Anda telah mempelajari bahwa std::unordered_map:

  • menggunakan tabel hash untuk operasi rata-rata O(1)
  • tidak memiliki urutan yang dijamin
  • memiliki API yang sama seperti map (find, count, at, erase)

Selanjutnya, Anda akan melihat unordered_set untuk penyimpanan elemen unik secara cepat.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “std::unordered_map” gratis?

Ya — teks lengkap “std::unordered_map” 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 “std::unordered_map”?

Pencarian cepat 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 1 dari 4.

Berapa lama pelajaran “std::unordered_map” 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