Je suis confus au sujet de la fonction de std::erase
en C++.std :: effacer en C++
Le code suivant obtient la même sortie avant et après l'appel de std::erase
.Mais si vous parcourez la liste après avoir effectué std::erase
, la valeur effacée n'apparaît pas en sortie. Aidez-moi à comprendre std::erase
.
#include<bits/stdc++.h>
using namespace std;
int main()
{
list<int> v;
v.push_back(12);
v.push_back(10);
v.push_back(20);
list<int>::iterator it;
it = v.begin();
printf("%u %d\n", it, *it);
v.erase(it);
printf("%u %d\n", it, *it);
for(it= v.begin(); it!= v.end(); it++)
cout<< *it<<" ";
return 0;
}
Sortie:
"Memory address" 12
"Memory Address" 12
10 20
Ce qui est en fait pas clairement les [documents] (http://en.cppreference.com/w/cpp/container/list/erase)? En outre, votre sortie ne rend pas comme vous le décrivez. –
En outre, [ne pas inclure ''] (http://stackoverflow.com/questions/31816095/pourquoi- ne devrait pas inclure -bits-stdc-h). –
Il n'y a pas de 'std :: erase' dans la bibliothèque standard. – juanchopanza