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
- std::unordered_map
- unordered_set
- Fungsi Hash Kustom
- Pertimbangan Performa