std::unordered_map
Karma tabanlı hızlı arama
std::unordered_map, CoddyKit'te ücretsiz bir C++ Academy dersidir. Bu, 4 dersinin 1. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, C++ Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. C++ Academy kursu toplamda 4 dersten oluşur.
unordered_map Nedir?
std::unordered_map, anahtar-değer çiftlerini bir hash tablosunda saklar. Arama, ekleme ve silme işlemleri ortalama olarak sabit zamanlıdır; ancak öğelerin sıralı bir düzeni yoktur.
#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 ve unordered_map Karşılaştırması
İhtiyaçlarınıza göre seçim yapın:
map: sıralıdır, işlemler O(log n) zamanında gerçekleşir.unordered_map: sırasızdır, işlemler ortalama O(1) zamanında gerçekleşir.
Yalnızca hızlı aramalara ihtiyacınız varsa unordered_map kullanın.
#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;
}Ekleme ve Güncelleme
map ile aynı API'yi kullanır: [], insert() veya emplace() kullanın.
#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;
}find ile Arama
find() bir yineleyici veya end() döndürür. Bu, [] operatörünün yapacağı gibi varsayılan bir değeri yanlışlıkla eklemenizi önler.
#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;
}Varlığı Denetleme
count() 0 veya 1 döndürür; C++20 ise anlaşılır bir mantıksal denetim için contains() işlevini ekler.
#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;
}Üzerinde Dolaşma
Üzerinde dolaşabilirsiniz; ancak sıra belirtilmemiştir. Sıralı veya ekleme sırasına göre olacağına asla güvenmeyin.
#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;
}Silme
erase(), anahtara göre siler ve silinen öğe sayısını döndürür.
#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;
}Sıklıkları Hızlı Sayma
Sıralamanın önemli olmadığı büyük veri kümelerinde unordered_map, sıklıkları map'ten daha hızlı sayar.
#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;
}at() Kullanımı
at() bir başvuru döndürür ve eksik bir anahtar için std::out_of_range fırlatır; hiçbir zaman ekleme yapmaz.
#include <iostream>
#include <unordered_map>
int main() {
std::unordered_map<std::string, int> m{{"score", 42}};
std::cout << m.at("score") << '\n';
return 0;
}[] ile Varsayılan Ekleme
Eksik bir anahtara [] ile erişmek, anahtarı değerle başlatılmış bir değerle (int'ler için 0) ekler. Dikkatli olun; map'i sessizce büyütür.
#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;
}Map'i Temizleme
clear() tabloyu boşaltır, empty() ise hiç öğe bulunup bulunmadığını bildirir.
#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;
}Hızlı Kontrol
unordered_map sıralaması konusundaki anlayışınızı sınayın.
Özet
std::unordered_map için şunları öğrendiniz:
- ortalama O(1) zamanlı işlemler için bir hash tablosu kullanır
- garantili bir sırası yoktur
mapile aynı API'yi paylaşır (find,count,at,erase)
Sırada, hızlı ve benzersiz öğe saklama için unordered_set'i göreceksiniz.
Sıkça Sorulan Sorular
“std::unordered_map” dersi ücretsiz mi?
Evet — “std::unordered_map” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve C++ Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. C++ Academy kursu toplamda 4 dersten oluşur.
“std::unordered_map” dersinde ne öğreneceğim?
Karma tabanlı hızlı arama C++ Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
C++ Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te C++ Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 1. dersidir.
“std::unordered_map” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu C++ Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her C++ Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- std::unordered_map
- unordered_set
- Özel Karma İşlevleri
- Performans Değerlendirmeleri