Partager via


multiset::erase

Supprime un élément ou une plage d'éléments dans un multiensemble des positions spécifiées ou supprime des éléments qui correspondent à une clé spécifiée.

iterator erase(
   iterator _Where
);
iterator erase(
   iterator _First,
   iterator _Last
);
size_type erase(
   const key_type& _Key
);

Paramètres

  • _Where
    Position de l'élément à supprimer du multiensemble.

  • _First
    Position du premier élément est supprimé du multiensemble.

  • _Last
    Positionnez uniquement au delà de le dernier élément supprimé du multiensemble.

  • _Key
    La clé des éléments à supprimer du multiensemble.

Valeur de retour

Pour les deux premières fonctions membres, un itérateur bidirectionnel qui indique le premier élément restant en plus de tous les éléments supprimés, ou un pointeur vers la fin du multiensemble s'il n'existe aucun élément.

[!REMARQUE]

Ce type de retour n'est pas conforme à la norme C++.

Pour la troisième fonction membre, retourne le nombre d'éléments supprimés du multiensemble.

Notes

Parfois, cette méthode peut lever une exception d' out_of_range .

Exemple

Lors de la compilation cet exemple avec l'indicateur d' /Wp64 ou sur une plateforme 64 bits, l'avertissement du compilateur l'erreur C4267 est généré.Pour plus d'informations sur cet avertissement, consultez Avertissement du compilateur (niveau 3) C4267.

// multiset_erase.cpp
// compile with: /EHsc
#include <set>
#include <iostream>

int main()
{
    using namespace std;
    multiset<int> ms1, ms2, ms3;
    multiset<int>::iterator pIter, Iter1, Iter2;
    int i;
    multiset<int>::size_type n;

    for (i = 1; i < 5; i++)
    {
        ms1.insert(i);
        ms2.insert(i * i);
        ms3.insert(i - 1);
    }

    // The 1st member function removes an element at a given position
    Iter1 = ++ms1.begin();
    ms1.erase(Iter1);

    cout << "After the 2nd element is deleted, the multiset ms1 is:" ;
    for (pIter = ms1.begin(); pIter != ms1.end(); pIter++)
        cout << " " << *pIter;
    cout << "." << endl;

    // The 2nd member function removes elements
    // in the range [_First, _Last)
    Iter1 = ++ms2.begin();
    Iter2 = --ms2.end();
    ms2.erase(Iter1, Iter2);

    cout << "After the middle two elements are deleted, "
         << "the multiset ms2 is:" ;
    for (pIter = ms2.begin(); pIter != ms2.end(); pIter++)
        cout << " " << *pIter;
    cout << "." << endl;

    // The 3rd member function removes elements with a given _Key
    ms3.insert(2);
    n = ms3.erase(2);

    cout << "After the element with a key of 2 is deleted,\n"
         << "the multiset ms3 is:" ;
    for (pIter = ms3.begin(); pIter != ms3.end(); pIter++)
        cout << " " << *pIter;
    cout << "." << endl;

    // The 3rd member function returns the number of elements removed
    cout << "The number of elements removed from ms3 is: "
         << n << "." << endl;

    // The dereferenced iterator can also be used to specify a key
    Iter1 = ++ms3.begin();
    ms3.erase(Iter1);

    cout << "After another element with a key"
         << endl;
    cout  << "equal to that of the 2nd element is deleted, "
          << "the multiset ms3 is:" ;
    for (pIter = ms3.begin(); pIter != ms3.end(); pIter++)
        cout << " " << *pIter;
    cout << "." << endl;
}
  
  
  
  
  

Configuration requise

en-tête : <set>

l'espace de noms : DST

Voir aussi

Référence

multiset Class

Modèles Standard