Ce face std::unordered_multimap
std::unordered_multimap combină ideea de std::multimap (chei repetate) cu tabela hash a lui std::unordered_map. Nu are operator[] și nici at. Valorile unei chei se obțin cu equal_range(cheie); elementele cu aceeași cheie sunt alăturate, dar ordinea lor (și ordinea cheilor) nu este garantată.
Parametri
| Parametru | Descriere |
|---|---|
Cheie, Valoare |
Ca la std::unordered_map. |
Ce returnează
Un obiect unordered_multimap.
Exemple
Exemplul 1: Numerele de telefon ale unei persoane
Ordinea valorilor pentru aceeași cheie nu este garantată, așa că le sortăm înainte de afișare.
#include <algorithm>
#include <print>
#include <string>
#include <unordered_map>
#include <vector>
int main() {
std::unordered_multimap<std::string, std::string> telefoane{
{"Ana", "0722 111 222"}, {"Ion", "0744 333 444"}, {"Ana", "0232 555 666"},
};
std::println("Ana are {} numere", telefoane.count("Ana"));
auto [prim, ultim] = telefoane.equal_range("Ana");
std::vector<std::string> numere;
for (auto it = prim; it != ultim; ++it) {
numere.push_back(it->second);
}
std::ranges::sort(numere);
std::println("{}", numere);
}
Rezultat
Ana are 2 numere
["0232 555 666", "0722 111 222"]
Greșeli frecvente
- Presupui că valorile unei chei ies în ordinea în care le-ai adăugat. Ordinea depinde de implementare.
Comenzi înrudite
std::unordered_map: Dicționar bazat pe tabelă hash: căutare în timp mediu constant, dar fără o ordine anume a elementelor.std::multimap: Ca std::map, dar aceeași cheie poate apărea de mai multe ori, cu valori diferite.