Requisito previo: conjunto múltiple
El multiset::erase() es la función STL en C++ que elimina el elemento especificado de multiset.
Hay tres versiones de este método. Estos son:
- Sintaxis:
void erase (iterator position_of_iterator);
Parámetros: Este método acepta los siguientes parámetros:
- position_of_iterator: se refiere a la posición del elemento específico que se eliminará con la ayuda del iterador.
Valor devuelto: este método devuelve el iterador que sigue al elemento eliminado.
Los siguientes ejemplos ilustran el funcionamiento del método multiset::erase():
// C++ program to demonstrate
// multiset::erase() method
#include <bits/stdc++.h>
using
namespace
std;
int
main()
{
// Initialise the multiset
multiset<
int
> multi_set;
multiset<
int
>::iterator ms_iterator;
// Add values to the multiset
for
(
int
i = 1; i < 10; i++) {
multi_set.insert(i);
}
cout <<
"Original multiset: "
;
for
(ms_iterator = multi_set.begin();
ms_iterator != multi_set.end();
++ms_iterator)
cout
<<
' '
<< *ms_iterator;
cout <<
'\n'
;
ms_iterator = multi_set.begin();
ms_iterator++;
// Passing the iterator for the position
// at which the value is to be erased
multi_set.erase(ms_iterator);
cout <<
"Modified multiset: "
;
for
(ms_iterator = multi_set.begin();
ms_iterator != multi_set.end();
++ms_iterator)
cout <<
' '
<< *ms_iterator;
cout <<
'\n'
;
return
0;
}
Producción:Original multiset: 1 2 3 4 5 6 7 8 9 Modified multiset: 1 3 4 5 6 7 8 9
- Sintaxis:
size_type erase (const value_type& contant_value);
Parámetros: Este método acepta los siguientes parámetros:
- valor_constante : se refiere al elemento específico que se eliminará del conjunto múltiple con la ayuda de su valor. Debe ser constante. Todas las instancias de este valor se borran con este método.
Valor devuelto: Este método devuelve el no. de valores que es/son eliminados.
Los siguientes ejemplos ilustran el funcionamiento del método multiset::erase():
// C++ program to demonstrate
// multiset::erase() method
#include <bits/stdc++.h>
using
namespace
std;
int
main()
{
// Initialise the multiset
multiset<
int
> multi_set;
multiset<
int
>::iterator ms_iterator;
// Add values to the multiset
for
(
int
i = 1; i < 10; i++) {
multi_set.insert(i);
}
cout <<
"Original multiset: "
;
for
(ms_iterator = multi_set.begin();
ms_iterator != multi_set.end();
++ms_iterator)
cout <<
' '
<< *ms_iterator;
cout <<
'\n'
;
ms_iterator = multi_set.begin();
// Passing constant value to be erased
int
num = multi_set.erase(2);
cout <<
"Modified multiset: "
<<
"("
<< num <<
")"
<<
"removed"
;
for
(ms_iterator = multi_set.begin();
ms_iterator != multi_set.end();
++ms_iterator)
cout <<
' '
<< *ms_iterator;
cout <<
'\n'
;
return
0;
}
Producción:Original multiset: 1 2 3 4 5 6 7 8 9 Modified multiset:(1)removed 1 3 4 5 6 7 8 9
- Sintaxis:
void erase (iterator starting_iterator, iterator ending_iterator);
Parámetros: Este método acepta los siguientes parámetros:
- iterador_inicial: Se refiere al iterador inicial del rango de valores que se eliminará del conjunto múltiple.
- end_iterator : se refiere al iterador final del rango de valores que se eliminará del conjunto múltiple.
Valor devuelto: este método devuelve el iterador que sigue al último elemento eliminado o finaliza el iterador.
Los siguientes ejemplos ilustran el funcionamiento del método multiset::erase():
// C++ program to demonstrate
// multiset::erase() method
#include <bits/stdc++.h>
using
namespace
std;
int
main()
{
// Initialise the multiset
multiset<
int
> multi_set;
multiset<
int
>::iterator ms_iterator;
// Add values to the multiset
for
(
int
i = 1; i < 10; i++) {
multi_set.insert(i);
}
cout <<
"Original multiset: "
;
for
(ms_iterator = multi_set.begin();
ms_iterator != multi_set.end();
++ms_iterator)
cout <<
' '
<< *ms_iterator;
cout <<
'\n'
;
ms_iterator = multi_set.begin();
ms_iterator++;
ms_iterator++;
// Passing the iterator range for the positions
// at which the values are to be erased
auto
ir = multi_set.erase(ms_iterator, multi_set.end());
cout <<
"Modified multiset: "
;
for
(ms_iterator = multi_set.begin();
ms_iterator != multi_set.end();
++ms_iterator)
cout <<
' '
<< *ms_iterator;
cout <<
'\n'
;
(ir == multi_set.end())
? cout <<
"Return value is: multi_set.end()\n "
: cout
<<
"Return value is not multi_set.end()\n"
;
return
0;
}
Producción:Original multiset: 1 2 3 4 5 6 7 8 9 Modified multiset: 1 2 Return value is: multi_set.end();