std::find dans un set

std::find dans un set - C++ - Programmation

Marsh Posté le 31-05-2012 à 18:47:27    

Bonjour
debutante je souhaite parcourir le vecteur pour le comparer avec la liste set triée et trouver les elements commun
 

Code :
  1. struct ListeningPort
  2. {
  3.     std::string protocol;
  4.     std::string address;
  5. };
  6. ...
  7. vector<ListeningPort> ports = ...
  8. set<ListeningPort> listSortOld = ...
  9. vector<ListeningPort>::const_iterator i;
  10. FOR_EACH(i, ports)
  11. {
  12.   set<ListeningPort>::const_iterator trouve =  listSortOld.find(i); 
  13.   // en mettant des debug je remarque que rien ne n'affiche apres cette ligne ci dessus qui doit etre fausse car si je l'enleve mon debug plus loin //s'affiche pourtant j'ai pas d'erreur de compil POURQUOI CETTE LIGNE EST FAUSSE?
  14. }

 
 

Reply

Marsh Posté le 31-05-2012 à 18:47:27   

Reply

Marsh Posté le 31-05-2012 à 23:44:08    

Yo,
 
Ton set contient des "ListeningPort" et tu recherches dedans un "iterator".
Forcément il ne peut pas le trouver.
Le find d'un set doit prendre un parameter du type contenu dans le set.
Plus d'infos :
http://www.cplusplus.com/reference/stl/set/find/

Reply

Marsh Posté le 11-06-2012 à 13:15:14    

Si tu appellais ton iterator "it" et pas "i" tu serais peut être moins tenté de faire un find(i) dans ton std::set ;)
C'est aussi un peu ballot d'appeller ton set "listXXX"
 
tu devrais par exemple faire par souci de clarté:

Code :
  1. FOR_EACH(it, ports)
  2. {
  3.     const ListeningPort &curPort = (*it);
  4.     set<ListeningPort>::const_iterator itPortInSet = listSortOld.find(curPort);
  5.     // Ton code  
  6. }


Message édité par Malkav le 11-06-2012 à 13:16:48

---------------
Mes feedbacks * Ma galerie photo
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed