Recherche d'un string dans un tableau [RESOLU] - C++ - Programmation
Marsh Posté le 28-07-2005 à 16:53:46
utilise donc un conteneur de la STL, genre vector<>, qui possède toutes les méthodes nécessaires, plutot qu'un tableau C-Style (machin[])
Marsh Posté le 28-07-2005 à 17:01:32
si tu es contraint d'utiliser des tableaux, tu peux aussi utiliser std::find() avec les adresses de début et de fin de tableau en guise d'itérateur de début et de fin respectivement.
Marsh Posté le 28-07-2005 à 17:50:08
Non non, j'ai fini utiliser un vector, ca me parait mieux...
J'ai codé une boucle pour rechercher mais je me pose la question suivante :
pourquoi c'est mieux d'utiliser un iterator plutot que de faire vec[i] ?? Ca va vraiment plus vite?
Merci pour vos explications...
Marsh Posté le 28-07-2005 à 17:53:23
non, utiliser un iterator n'ira pas plus vite que manipuler des pointeurs, par contre, manipuler un std::vector est largement plus aisé (et flexible) que d'avoir a se servir d'un tableau string x[]
Marsh Posté le 28-07-2005 à 17:58:04
Oui mais dans mon cas, le nombre de string contenues par le vector est toujours le même donc si je fais :
Code :
|
ou vec est un vector <string> et chaine un string
c'est suffisant non?
Marsh Posté le 28-07-2005 à 18:05:03
pourquoi passes-tu par des strcmp tout droit issus du C alors que tu as de beaux opérateurs définis sur tes strings ?
Et les itérateurs ne sont pas là que pour les fonctions de la stl
remplace-moi ca par un truc du style :
Code :
|
edit : correction pour cohérence du code (oubli d'un std:: )
Marsh Posté le 29-07-2005 à 07:55:58
_p1c0_ a écrit : ou vec est un vector <string> et chaine un string |
non, c'est même faux. Une std::string n'est pas délimité par un '\0'. strlen(s.c_str()) <= s.size(). Donc tu risques de ne comparer qu'une portion de tes chaines. operator== fait le boulot comme il faut. et comme dit joelf, std::find le fait encore mieux.
Marsh Posté le 29-07-2005 à 07:56:53
theshockwave a écrit : |
http://forum.hardware.fr/hardwaref [...] 9981-1.htm
Marsh Posté le 29-07-2005 à 08:46:11
Joel F a écrit : et std::find() c'est pour les babouins ?? |
En fait, en faisant mes recherches sur google, j'ai pas trouvé vraiment de document où toutes les méthodes sont répertoriées... Si vous avez un bon lien, je suis preneur!
J'ai donc fini par utiliser std::find() et ca marche très bien!!
Merci à tous!
Marsh Posté le 29-07-2005 à 09:45:24
Citation : et std::find() c'est pour les babouins ?? |
Oui, bon, j'ai honte, j'ai pas cherché à comprendre ce qu'il faisait en détails et j'ai juste modifié son exemple plutôt que réécrit une autre version
Marsh Posté le 29-07-2005 à 10:27:14
_p1c0_ a écrit : Si vous avez un bon lien, je suis preneur! |
http://wwwasd.web.cern.ch/wwwasd/l [...] assref.htm ->tout ce qui faut
http://www.sgi.com/tech/stl/index.html ->le site de la stl
sinon google
tu cherches stl c++ et ce que tu veux
(ex stl c++ vector)
Marsh Posté le 29-07-2005 à 10:53:04
Reply
Marsh Posté le 28-07-2005 à 15:50:57
Bonjour à tous,
je voudrais juste savoir s'il y a une fonction qui fait ca ou s'il faut que je la code moi même!
J'ai un tableau :
string actions[] = {"taper","lancer","jouer"}
et un string mon_action.
Je cherche une fonction du genre bool rechercher(mon_action,actions) et qui me renvoie vrai si la chaine mon_action est présente dans le tableau actions...
C'est pas dur à coder mais si ca existe, c'est surement mieux de prendre une fonction toute faite!
Merci d'avance pour votre aide.
p1c0.
Message édité par _p1c0_ le 29-07-2005 à 10:53:31
---------------
-_- http://www.scienceshopping.com -_-