IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SL & STL C++ Discussion :

[rouillé]équivalent contains Java pour les vector C++?


Sujet :

SL & STL C++

  1. #1
    Membre régulier Avatar de Mr Pink Eyes
    Étudiant
    Inscrit en
    Mai 2007
    Messages
    116
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 116
    Points : 119
    Points
    119
    Par défaut [rouillé]équivalent contains Java pour les vector C++?
    Bonjour,

    Je me remets à C++ après une (trop) longue pause Java. Je manipule un std::vector<string> et je voudrais savoir s'il existe en C++ une fonction équivalente à public boolean contains(Object elem) en Java (qui permet de savoir si un élement est contenu dans le vector).

    Merci d'avance

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 53
    Points : 86
    Points
    86
    Par défaut
    Si mes souvenirs sont bons.
    Empty() qui te retourne un booléen
    ou size() qui te retourne la taille

  3. #3
    Membre régulier Avatar de Mr Pink Eyes
    Étudiant
    Inscrit en
    Mai 2007
    Messages
    116
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 116
    Points : 119
    Points
    119
    Par défaut
    Merci pour la réponse mais je me rends compte que j'ai mal expliquer l'utilité de contains(Object elmt). En fait elle permet de savoir si l'objet elmt est contenu dans le vecteur.

    Voilà

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    92
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France, Côte d'Or (Bourgogne)

    Informations forums :
    Inscription : Mai 2005
    Messages : 92
    Points : 108
    Points
    108
    Par défaut
    Si mes souvenirs sont bons, on peut utiliser std::find(), avec un test du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    bool contains = std::find(start, finish, value) != finish;
    avec la différence sans doute par rapport à Java (que je ne connais que de loin) que le vecteur contient peut-être des valeurs et non des pointeurs, et donc que l'algorithme nécessite que operator== soit redéfini pour le type dont la valeur est recherchée.

  5. #5
    Membre régulier Avatar de Mr Pink Eyes
    Étudiant
    Inscrit en
    Mai 2007
    Messages
    116
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 116
    Points : 119
    Points
    119
    Par défaut
    pile poil ce qu'il me fallait! Bon j'venais juste de codé une fonction pour retirer les doublons () mais ça va alleger mon code. J'avais regardé du coté de find_if mais vu que mon critère de test est dynamique....

    Merci beaucoup!!!! Affaire classée!

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    92
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France, Côte d'Or (Bourgogne)

    Informations forums :
    Inscription : Mai 2005
    Messages : 92
    Points : 108
    Points
    108
    Par défaut
    Sinon pour retirer des doublons, std::sort et std::adjacent_find font aussi l'affaire et sont déjà tout codés

  7. #7
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Points : 16 213
    Points
    16 213
    Par défaut
    Tant qu'à faire, autant utiliser std::sort et std::unique, non ?
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    92
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France, Côte d'Or (Bourgogne)

    Informations forums :
    Inscription : Mai 2005
    Messages : 92
    Points : 108
    Points
    108
    Par défaut
    oui !

  9. #9
    Membre éprouvé
    Avatar de NiamorH
    Inscrit en
    Juin 2002
    Messages
    1 309
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 1 309
    Points : 1 051
    Points
    1 051
    Par défaut
    Et puis puis même pourquoi pas utiliser un std::set à la place du std::vector qui détecte lui même les doublons à l'insertion comme ça plus à t'en soucier...

    à moins que l'ordre de tes objets soit important et qu'il ne respecte pas forcément l'ordre logique de l'opérateur de comparaison <

  10. #10
    Membre régulier Avatar de Mr Pink Eyes
    Étudiant
    Inscrit en
    Mai 2007
    Messages
    116
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 116
    Points : 119
    Points
    119
    Par défaut
    Le std::vector c'est parce que c'est necessaire pour utiliser un algo récupéré ailleurs afin d'appliquer un algorithme de Lanczos. Ensuite la méthode sort marche pas car c'est un vector de structure. Enfin je vais quand même jeter un oeil à tous vos sympathiques conseils.

    Merci à tous

  11. #11
    Membre éprouvé
    Avatar de NiamorH
    Inscrit en
    Juin 2002
    Messages
    1 309
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 1 309
    Points : 1 051
    Points
    1 051
    Par défaut
    Citation Envoyé par Mr Pink Eyes Voir le message
    la méthode sort marche pas car c'est un vector de structure.
    Regarde ce sujet : http://www.developpez.net/forums/sho...d.php?t=464521

    Tu peux surement faire pareil pour std::sort.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. « Java pour les enfants » consultable en ligne !
    Par Mickael Baron dans le forum Programmation pour enfants
    Réponses: 140
    Dernier message: 23/08/2018, 18h04
  2. Un lecteur de Streaming JAVA pour les flux OGG
    Par kmdkaci dans le forum Mon programme
    Réponses: 1
    Dernier message: 10/10/2011, 01h23
  3. Gérer le cache de Java pour les images
    Par JavaMan77 dans le forum Applets
    Réponses: 0
    Dernier message: 14/12/2008, 23h49
  4. Quel est l'équivalent de Findcomponent pour les Forms ?
    Par Ben_Le_Cool dans le forum Composants VCL
    Réponses: 12
    Dernier message: 23/09/2005, 12h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo