multimap ve multiset
Yinelenen anahtarlara izin verin
multimap ve multiset, CoddyKit'te ücretsiz bir C++ Academy dersidir. Bu, 4 dersinin 3. 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.
Yinelenenlere İzin Verme
std::multimap ve std::multiset, map ve set gibidir; ancak yinelenen anahtarlara izin verirler. Her şey sıralı kalır.
#include <iostream>
#include <set>
int main() {
std::multiset<int> ms{1, 2, 2, 3, 3, 3};
for (int x : ms) std::cout << x << ' ';
std::cout << '\n';
return 0;
}multiset'e Ekleme
Bir multiset'e yapılan her insert() işlemi, değerler tekrarlansa bile başarılı olur ve konteyner her seferinde büyür.
#include <iostream>
#include <set>
int main() {
std::multiset<std::string> ms;
ms.insert("a");
ms.insert("a");
ms.insert("a");
std::cout << ms.size() << " elements\n";
return 0;
}Yinelenenleri Sayma
count() artık bir değerin kaç kez göründüğünü döndürür; bu sayı 1'den büyük olabilir.
#include <iostream>
#include <set>
int main() {
std::multiset<int> ms{5, 5, 5, 7, 9, 9};
std::cout << "5 appears " << ms.count(5) << " times\n";
std::cout << "9 appears " << ms.count(9) << " times\n";
return 0;
}Tümünü ve Birini Silme
erase(key), eşleşen tüm öğeleri kaldırır. Yalnızca birini kaldırmak için find() ile bulunan tek bir yineleyiciyi silin.
#include <iostream>
#include <set>
int main() {
std::multiset<int> ms{1, 2, 2, 2, 3};
ms.erase(ms.find(2));
std::cout << "count of 2: " << ms.count(2) << '\n';
return 0;
}multimap Temelleri
std::multimap, anahtarları değerlere eşler; ancak bir anahtarın birden çok değere eşlenmesine izin verir. Not: operator[] içermez.
#include <iostream>
#include <map>
int main() {
std::multimap<std::string, int> mm;
mm.insert({"fruit", 1});
mm.insert({"fruit", 2});
mm.insert({"veg", 3});
std::cout << mm.size() << " pairs\n";
return 0;
}multimap Üzerinde Dolaşma
Yineleme, yinelenen anahtarlar da dâhil olmak üzere tüm çiftleri sıralı anahtar düzeninde verir.
#include <iostream>
#include <map>
int main() {
std::multimap<std::string, int> mm{{"a", 1}, {"a", 2}, {"b", 3}};
for (const auto& [k, v] : mm) {
std::cout << k << " => " << v << '\n';
}
return 0;
}equal_range
equal_range(key), bu anahtara sahip tüm öğeleri kapsayan bir yineleyici çifti döndürür; bir anahtarın tüm değerlerini okumak için standart yöntem budur.
#include <iostream>
#include <map>
int main() {
std::multimap<std::string, int> mm{{"x", 10}, {"x", 20}, {"y", 30}};
auto range = mm.equal_range("x");
for (auto it = range.first; it != range.second; ++it) {
std::cout << it->second << ' ';
}
std::cout << '\n';
return 0;
}Verileri Gruplama
multimap, gruplama için idealdir: örneğin birçok kişi aynı şehri paylaşabilir.
#include <iostream>
#include <map>
int main() {
std::multimap<std::string, std::string> byCity{
{"NYC", "Alice"}, {"NYC", "Bob"}, {"LA", "Carol"}
};
auto r = byCity.equal_range("NYC");
for (auto it = r.first; it != r.second; ++it)
std::cout << it->second << '\n';
return 0;
}multiset üzerinde lower_bound
Sıralı aralık sorguları yine çalışır. lower_bound, hedeften küçük olmayan ilk öğeyi bulur.
#include <iostream>
#include <set>
int main() {
std::multiset<int> ms{1, 2, 2, 3, 4};
auto it = ms.lower_bound(2);
std::cout << "first >= 2 is " << *it << '\n';
return 0;
}Sıralı Sıklık Listesi
Öğeler sıralı kaldığından, multiset yinelemeleri koruyarak doğal olarak sıralı çıktı üretir.
#include <iostream>
#include <set>
int main() {
std::multiset<int> scores{90, 75, 90, 60, 75, 90};
for (int s : scores) std::cout << s << ' ';
std::cout << '\n';
return 0;
}Toplam ve Farklı Olanlar
size(), yinelenenler de dâhil olmak üzere her öğeyi sayar; farklı anahtarlar üzerinde dolaşırken ise tekrarları kendiniz atlamanız gerekir.
#include <iostream>
#include <set>
int main() {
std::multiset<int> ms{1, 1, 2, 3, 3};
std::cout << "total: " << ms.size() << '\n';
std::cout << "count of 1: " << ms.count(1) << '\n';
return 0;
}Hızlı Kontrol
Bir multiset'ten öğe silme konusundaki anlayışınızı sınayın.
Özet
multimap ve multiset için şunları öğrendiniz:
- sıralı kalırken yinelenen anahtarlara izin verirler
- aynı anahtarı paylaşan tüm değerleri okumak için
equal_rangekullanırlar erase(key)tüm eşleşmeleri kaldırırken, bir yineleyiciyi silmenin yalnızca bir eşleşmeyi kaldırması
Sırada, özel karşılaştırıcılarla sıralamayı denetleyeceksiniz.
Sıkça Sorulan Sorular
“multimap ve multiset” dersi ücretsiz mi?
Evet — “multimap ve multiset” 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.
“multimap ve multiset” dersinde ne öğreneceğim?
Yinelenen anahtarlara izin verin 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 3. dersidir.
“multimap ve multiset” 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::map
- std::set
- multimap ve multiset
- Özel Karşılaştırıcılar