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

C++ Discussion :

Les vecteurs et les opérateurs en C++ VS la bib. STL


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mars 2010
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2010
    Messages : 51
    Par défaut Les vecteurs et les opérateurs en C++ VS la bib. STL
    Bonjour,

    J'aimerais faire une comparaison entre deux vecteurs de classe A et je cherche à utiliser des fonctions prédéfinies pour gagner du temps. J'ai cherché dans la FAQ et sur le net et je me suis tombé sur le site de microsoft :
    http://msdn.microsoft.com/en-us/libr...8VS.71%29.aspx

    La méthode utilisée est intéressante, mais je veux bien utiliser une fonction prédéfinie de la bibliothèque STL par exemple.

    Aviez vous une idée? ou dois je créer moi même un opérateur comme celui dans l'exemple précédent?


    Merci d'avance.

  2. #2
    Expert confirmé

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par défaut
    Je comprends pas la question, tu pointes vers une page donnant un exemple d'utilisation d'une fonction de la SL.

  3. #3
    Membre expérimenté Avatar de Nogane
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    241
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 241
    Par défaut
    Bonjour,
    Je ne crois pas que cet opérateur(== sur des vector) existe dans la STL, mais il est facile a faire. Sinon, il y as bien la fonction std::equal:
    template <class InputIterator1, class InputIterator2>
    bool equal ( InputIterator1 first1, InputIterator1 last1,
    InputIterator2 first2 );
    Elle est juste plus lourde syntaxiquement.

  4. #4
    Expert confirmé

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par défaut
    Citation Envoyé par Nogane Voir le message
    Je ne crois pas que cet opérateur(== sur des vector) existe dans la STL,
    Il existe. De meme qu'operator!=, operator<, operator<=, operator>= operator>=.

  5. #5
    Membre averti
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mars 2010
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2010
    Messages : 51
    Par défaut
    Rebonjour,

    Je reformule la question, y'a pas une autre solution, meilleure que celle citée permettant de faire une comparaison entre deux vecteurs d'objets (même si la comparaison se fait selon l'ordre lexicographique et que dans mon cas les vecteurs contiennent des objets non triés, mais bon je vais me débrouiller...).

    Merci pour vos réponses.

  6. #6
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 635
    Par défaut
    Salut,

    Il n'y a rien à faire, il n'est possible de comparer deux contenants qu'en... comparant leur contenu...

    Comment voudrais tu faire autrement ?

    Maintenant, il est différentes possibilités pour s'assurer que la comparaison entre deux objets soit "cohérente", et donc que la comparaison de deux conteneurs soit, elle aussi cohérente en fonction des objets qu'ils contiennent
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  7. #7
    Membre averti
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mars 2010
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2010
    Messages : 51
    Par défaut
    Merci koala01, maintenant espérons que C++ soit gentil avec mes 200 000 vecteurs et le nombre de comparaisons engendré (soit une complexité de l'ordre de 200 000 au carée )...

    Encore merci pour vos réponses.

  8. #8
    Membre averti
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mars 2010
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2010
    Messages : 51
    Par défaut
    ReBonjour,

    Je me suis trouvé dans l'obligation de trier les éléments du vecteur, j'ai pas trouvé une autre alternative. J'ai désormais deux vecteurs de string triés.
    Cependant j'ai pas trouvé un algorithme ou une méthode efficace dans la bibliothèque STL répondant à mon besoin :

    => Fusionner les deux vecteurs si le nombre d'éléments en commun dépasse un nombre donnée.
    Donc j'ai besoin de :
    -Trouver le nombre d'éléments en commun
    -L'indice du premier élément en commun dans le 1er vecteur
    -L'indice du premier élément en commun dans le 2e vecteur
    -Fusionner les deux vecteurs.

    Merci d'avance.

  9. #9
    Membre averti
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mars 2010
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2010
    Messages : 51
    Par défaut
    Pour la fusion j'ai trouvé la fonction set_union :
    http://www.cplusplus.com/reference/algorithm/set_union/
    Je vais l'adapter pour les vecteurs de string...

  10. #10
    Membre Expert

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2004
    Messages
    1 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 1 391
    Par défaut
    Tu as essayé de comprendre le code que j'ai donné en utilisant une doc de la bibliothèque standard ? (ou la norme ?)

    Il y a trois étaqpes :
    - Je trie les deux tableaux
    - J'enlève les doublons dans chaques tableaux
    - J'effectue la différence entre le premier est le second, ie je fait un nouveau tableaux dans lequel il n'y aura que les chaines de charactère du premier tableaux qui ne sont pas dans le second

    Si ce nouveau tableau est vide alors le premier est inclu dans le second (démonstration mathématique assez rapide).

  11. #11
    Membre averti
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mars 2010
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2010
    Messages : 51
    Par défaut
    Oui j'ai essayé et voilà ce que j'ai eu :
    'class std::vector<std::string, std::allocator<std::string> >' has no member named 'cbegin'

    Maintenant il ne me reste qu'une fonction qui donne le nombre d'éléments en commun...

  12. #12
    Membre averti
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mars 2010
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2010
    Messages : 51
    Par défaut
    ça va j'ai utilisé la fonction "is_difference".

    Merci.

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

Discussions similaires

  1. Réponses: 9
    Dernier message: 01/10/2010, 17h50
  2. Réponses: 23
    Dernier message: 30/10/2008, 15h39
  3. travailler avec les images et les vecteurs
    Par susimido dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 24/04/2006, 15h02

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