2012-09-03 4 views
0

Je l'exemple suivant:Retrait une fois de C++ Liste

// remove from list 
#include <iostream> 
#include <list> 
using namespace std; 

int main() 
{ 
    int myints[]= {17,89,89,7,14}; 
    list<int> mylist (myints,myints+5); 

    mylist.remove(89); 

    cout << "mylist contains:"; 
    for (list<int>::iterator it=mylist.begin(); it!=mylist.end(); ++it) 
     cout << " " << *it; 
    cout << endl; 

    return 0; 
} 

Le résultat est:

17, 7, 14 

Le problème est qu'il élimine les deux cas de 89. Y at-il facile façon de simplement supprimer une instance de 89?

+1

effacement nécessite itérateurs – Lorlin

+0

@Lorlin je continue à oublier les choses stl Oo, désolé –

Répondre

1

Non, il n'y a pas. Vous pourriez faire cependant:

mylist.erase(find(mylist.begin(), mylist.end(), 89)); 
+0

'std :: list' n'a pas de fonction de membre' find'. –

+1

eq: trouver est pas membre de la liste. – Indy9000

+0

désolé, corrigé. – Lorlin

Questions connexes