Ce face std::multiset
std::multiset este un std::set care păstrează și duplicatele. Elementele rămân sortate, iar count(x) spune de câte ori apare x.
Atenție la ștergere: erase(x) șterge toate aparițiile lui x. Ca să ștergi una singură, șterge prin iterator: ms.erase(ms.find(x)) (după ce verifici că find nu a returnat end()).
Parametri
| Parametru | Descriere |
|---|---|
T |
Tipul elementelor. |
Ce returnează
Un obiect multiset; insert returnează mereu un iterator la elementul nou.
Exemple
Exemplul 1: Note sortate, cu repetiții
#include <print>
#include <set>
int main() {
std::multiset<int> note{8, 10, 7, 10, 9, 10};
std::println("{}", note);
std::println("Note de 10: {}", note.count(10));
note.erase(note.find(10)); // șterge un singur 10
std::println("După ștergerea unui 10: {}", note);
note.erase(10); // șterge toți 10
std::println("După erase(10): {}", note);
}
Rezultat
{7, 8, 9, 10, 10, 10}
Note de 10: 3
După ștergerea unui 10: {7, 8, 9, 10, 10}
După erase(10): {7, 8, 9}
Greșeli frecvente
- Scrii
ms.erase(valoare)ca să ștergi o singură apariție și le pierzi pe toate. Foloseștems.erase(ms.find(valoare)). - Apelezi
ms.erase(ms.find(x))fără să verifici dacăxexistă:erase(end())este comportament nedefinit.
Comenzi înrudite
std::set: Mulțime ordonată de valori unice: elimină automat duplicatele și păstrează elementele sortate.std::multimap: Ca std::map, dar aceeași cheie poate apărea de mai multe ori, cu valori diferite.std::unordered_set: Mulțime de valori unice bazată pe hash: verificare „există?” în timp mediu constant, fără ordine.