std::unordered_map<Key,T,Hash,KeyEqual,Allocator>:: erase
|
iterator erase
(
iterator pos
)
;
|
(1) |
(depuis C++11)
(constexpr depuis C++26) |
|
iterator erase
(
const_iterator pos
)
;
|
(2) |
(depuis C++11)
(constexpr depuis C++26) |
|
iterator erase
(
const_iterator first, const_iterator last
)
;
|
(3) |
(depuis C++11)
(constexpr depuis C++26) |
|
size_type erase
(
const
Key
&
key
)
;
|
(4) |
(depuis C++11)
(constexpr depuis C++26) |
|
template
<
class
K
>
size_type erase ( K && x ) ; |
(5) |
(depuis C++23)
(constexpr depuis C++26) |
Supprime les éléments spécifiés du conteneur. L'ordre des éléments restants est préservé. (Cela permet de supprimer des éléments individuels lors de l'itération à travers le conteneur.)
[
first
,
last
)
, qui doit être un intervalle valide dans
*
this
.
Hash
et
KeyEqual
sont tous deux
transparents
, et que ni
iterator
ni
const_iterator
ne sont implicitement convertibles depuis
K
. Cela suppose qu'un tel
Hash
peut être appelé avec à la fois le type
K
et le type
Key
, et que le
KeyEqual
est transparent, ce qui, ensemble, permet d'appeler cette fonction sans construire une instance de
Key
.
Les références et itérateurs vers les éléments effacés sont invalidés. Les autres itérateurs et références ne sont pas invalidés.
L'itérateur pos doit être déréférençable. Par conséquent, l'itérateur end() (qui est valide, mais n'est pas déréférençable) ne peut pas être utilisé comme valeur pour pos .
Contenu
Paramètres
Valeur de retour
1-3)
Itérateur suivant le dernier élément supprimé.
4)
Nombre d'éléments supprimés (0 ou 1).
5)
Nombre d'éléments supprimés.
Exceptions
1-3)
Ne lance rien.
4,5)
Toute exception levée par les objets
Hash
et
KeyEqual
.
Complexité
Étant donné une instance
c
de
1,2)
Cas moyen : constant, cas le plus défavorable :
c.
size
(
)
.
4)
Cas moyen :
c.
count
(
key
)
, cas le plus défavorable :
c.
size
(
)
.
5)
Cas moyen :
c.
count
(
x
)
, cas le plus défavorable :
c.
size
(
)
.
Notes
ExempleExécutez ce code #include <unordered_map>
#include <iostream>
int main()
{
std::unordered_map<int, std::string> map =
{
{1, "one"}, {2, "two"}, {3, "three"},
{4, "four"}, {5, "five"}, {6, "six"}
};
// erase all odd keys from map
for (auto it = map.begin(); it != map.end();)
{
if (it->first % 2 != 0)
it = map.erase(it);
else
++it;
}
for (const auto& pair : map)
std::cout << pair.second << ' ';
std::cout << '\n';
}
Résultat possible : two four six
Rapports de défautsLes rapports de défauts modifiant le comportement suivants ont été appliqués rétroactivement aux normes C++ précédemment publiées.
Voir aussi
|