0Pricing
C++ Academy · Ders

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_range kullanı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

  1. std::map
  2. std::set
  3. multimap ve multiset
  4. Özel Karşılaştırıcılar
← C++ Academy Sayfasına Dön