std::multimap

Üdvözlöm, Ön a std::multimap szó jelentését keresi. A DICTIOUS-ban nem csak a std::multimap szó összes szótári jelentését megtalálod, hanem megismerheted az etimológiáját, a jellemzőit és azt is, hogyan kell a std::multimap szót egyes és többes számban mondani. Minden, amit a std::multimap szóról tudni kell, itt található. A std::multimap szó meghatározása segít abban, hogy pontosabban és helyesebben fogalmazz, amikor beszélsz vagy írsz. Astd::multimap és más szavak definíciójának ismerete gazdagítja a szókincsedet, és több és jobb nyelvi forráshoz juttat.

Főnév

std::multimap (tsz. std::multimaps)

  1. (informatika) A std::multimap a C++ STL (Standard Template Library) egyik asszociatív tárolója, amely kulcs-érték párokat tárol, és lehetővé teszi egy kulcshoz több érték hozzárendelését. Ez a fő különbség a std::map-hoz képest, ahol egy kulcshoz csak egy érték tartozhat.

std::multimap főbb jellemzői:

  • Rendezett tároló: Az elemek kulcs szerint növekvő sorrendben tárolódnak (alapértelmezés szerint std::less<Key> komparátor szerint).
  • Több azonos kulcsú elem: Egy kulcshoz több érték is tartozhat.
  • Automatikusan rendezi az elemeket: A std::set-hez hasonlóan az elemek mindig rendezettek maradnak.



Alapvető használat std::multimap-pal

#include <iostream>
#include <map>

using namespace std;

int main() {
    // Multimap deklarálása (kulcs: int, érték: string)
    multimap<int, string> players;

    // Elemeinek beszúrása
    players.insert({10, "Messi"});
    players.insert({7, "Ronaldo"});
    players.insert({10, "Mbappe"});
    players.insert({7, "Beckham"});
    players.insert({9, "Lewandowski"});

    // Kiíratás
    cout << "Multimap tartalma:\n";
    for (const auto& p : players) {
        cout << "Mezszám: " << p.first << ", Játékos: " << p.second << endl;
    }

    return 0;
}

Kimenet:

Multimap tartalma:
Mezszám: 7, Játékos: Beckham
Mezszám: 7, Játékos: Ronaldo
Mezszám: 9, Játékos: Lewandowski
Mezszám: 10, Játékos: Messi
Mezszám: 10, Játékos: Mbappe

💡 Megjegyzés: Az azonos mezszámú játékosok automatikusan növekvő sorrendben kerülnek tárolásra.



Fontos műveletek std::multimap-pal

1️⃣ Elemek beszúrása

Az elemeket az insert() metódussal lehet hozzáadni:

players.insert({10, "Neymar"});
players.insert(make_pair(10, "Pele"));

2️⃣ Elemek keresése (find, equal_range, lower_bound, upper_bound)

Mivel egy kulcshoz több érték is tartozhat, többféleképpen lehet keresni:

🔍 Egy konkrét kulcs első előfordulása (find())

auto it = players.find(10);
if (it != players.end()) {
    cout << "Mezszám: " << it->first << ", Játékos: " << it->second << endl;
}

Ez csak az első előfordulást adja vissza!



🔍 Összes adott kulcshoz tartozó elem (equal_range())

auto range = players.equal_range(10);
for (auto it = range.first; it != range.second; ++it) {
    cout << "Mezszám: " << it->first << ", Játékos: " << it->second << endl;
}

Ez a megoldás az összes 10 mezszámú játékost kiírja.



3️⃣ Elemek törlése

  • Egy adott kulcs összes értékének törlése:

    players.erase(10); // Az összes 10-es mezszámú játékost törli
    
  • Csak egy adott érték törlése egy kulcsnál:

    auto it = players.find(10); // Csak az első 10-es mezszámú játékost törli
    if (it != players.end()) {
        players.erase(it);
    }
    



4️⃣ Elemek bejárása és kiíratása

for (const auto& player : players) {
    cout << "Mezszám: " << player.first << ", Játékos: " << player.second << endl;
}

Mikor használjunk std::multimap-ot?

✅ Ha egy kulcshoz több érték is tartozhat (pl. több játékos ugyanazzal a mezszámmal).
✅ Ha az adatokat rendezetten szeretnénk tárolni és gyors keresési lehetőségre van szükség.
✅ Ha fontos, hogy a beszúrt elemek automatikusan növekvő sorrendben legyenek tárolva.

Ha egy kulcshoz csak egy érték tartozhat, akkor std::map jobb választás.
Ha gyorsabb hozzáférés kell, mint a std::multimap, akkor std::unordered_multimap lehet előnyösebb.



Összegzés

Tulajdonság std::map std::multimap
Egyedi kulcsok ❌ (több azonos kulcs is lehet)
Rendezett tárolás
Kulcshoz tartozó egyetlen érték
Kulcshoz tartozó több érték
Gyors keresés (O(log n))