std::list<T,Allocator>:: erase
| (1) | ||
|
iterator erase
(
iterator pos
)
;
|
(jusqu'en C++11) | |
|
iterator erase
(
const_iterator pos
)
;
|
(depuis C++11)
(constexpr depuis C++26) |
|
| (2) | ||
|
iterator erase
(
iterator first, iterator last
)
;
|
(jusqu'en C++11) | |
|
iterator erase
(
const_iterator first, const_iterator last
)
;
|
(depuis C++11)
(constexpr depuis C++26) |
|
Efface les éléments spécifiés du conteneur.
[
first
,
last
)
.
Les références et itérateurs vers les éléments supprimés sont invalidés. Les autres références et itérateurs ne sont pas affectés.
L'itérateur pos doit être valide et déréférençable. Ainsi 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 .
L'itérateur first n'a pas besoin d'être déréférençable si first == last : supprimer une plage vide est une opération sans effet.
ContenuParamètres
Valeur de retourItérateur suivant le dernier élément supprimé.
Si
[
first
,
last
)
est une plage vide, alors
last
est retourné.
Complexité
1)
Constante.
2)
Linéaire en fonction de la distance entre
first
et
last
.
NotesLorsque des éléments d'un conteneur doivent être effacés selon un prédicat, plutôt que d'itérer le conteneur et d'appeler unaire Exemple
Exécuter ce code
#include <list> #include <iostream> #include <iterator> void print_container(const std::list<int>& c) { for (int i : c) std::cout << i << ' '; std::cout << '\n'; } int main() { std::list<int> c{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; print_container(c); c.erase(c.begin()); print_container(c); std::list<int>::iterator range_begin = c.begin(); std::list<int>::iterator range_end = c.begin(); std::advance(range_begin, 2); std::advance(range_end, 5); c.erase(range_begin, range_end); print_container(c); // Effacer tous les nombres pairs for (std::list<int>::iterator it = c.begin(); it != c.end();) { if (*it % 2 == 0) it = c.erase(it); else ++it; } print_container(c); } Sortie : 0 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 1 2 6 7 8 9 1 7 9 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
|