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 :

intersection entre plusieurs vecteurs


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mai 2008
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 112
    Par défaut intersection entre plusieurs vecteurs
    Salut,
    je voulais savoir s'il existe une fonction prédéfini qui détermine l'intersection entre plusieurs vecteurs.Je travaille avec une structure(vecteur de vecteur d'entiers) par exemple < <1,2,3,4>,<1,2,3,4>,<1,2,4>....>

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    struct element
    {
    std::vetcor<int> elm;
    };
     
    struct global
    {
    std::vetcor<struct element> glob;
    };
    ce que je veux faire c'est d'obtenir l'intersection entre tous les vecteurs contenus dans une variable de type global.Si une telle fonction existe svp précisez moi comment je pourrais l'utiliser parce que je suis débutante en C++.Merci d'avance

  2. #2
    Membre expérimenté Avatar de Dalini71
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2008
    Messages
    181
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2008
    Messages : 181
    Par défaut
    Yop,

    T'appelles quoi intersection entre vector exactement ?

    Sinon je ne crois pas qu'une fonction de ce genre existe dans la STL.

  3. #3
    Membre confirmé
    Inscrit en
    Mai 2008
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 112
    Par défaut
    En fait il s'agit de récupérer les éléments communs entre les différents vecteurs.Par exemple < <1,2,3,4>,<1,2,3,4>,<1,2,4>....> j'aurais comme résultat <1,2,4>.Je pourrais comparer les vecteurs deux à deux.Existe t il au moins une fonction qui fait cela??

  4. #4
    Membre émérite Avatar de SofEvans
    Homme Profil pro
    Développeur C
    Inscrit en
    Mars 2009
    Messages
    1 084
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeur C

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 084
    Par défaut
    Ce que tu peux faire, c'est prendre ton premier vector comme modele.
    Ensuite, pour chaque element de ton vector, tu parcours ton n-ieme vector. Si il est present dans ton n-ieme vector, tu le conserve, sinon tu le supprime.

    Je pense que pour le modele, il faudrait prendre un std::list qui est mieux pour supprimer une occurence au milieu.

    Si tu veux plus de precision sur mon algo, demande ^^

  5. #5
    Membre confirmé
    Inscrit en
    Mai 2008
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 112
    Par défaut
    Merci pr la réponse.Mais j'ai pas bien saisi l'idée de ton algo.Stp peut tu m'expliquer avec un exemple pr ke ça soit plus clair pour moi.Et dis moi stp a quel niveau devrais-je utiliser le std::list.

  6. #6
    Membre émérite Avatar de SofEvans
    Homme Profil pro
    Développeur C
    Inscrit en
    Mars 2009
    Messages
    1 084
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeur C

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 084
    Par défaut
    Imaginons que tu est 3 vector :

    vector1 <1,2,4,5,7,12,46>
    vector2 <1,2,3,4,5,6,12>
    vector3 <3,5,7,12>

    tu prend le premier vector (arbitraire, si on veut faire optimiser, il faudrait prendre le vector ou il y a le moins d'occurence) et tu copie son contenue dans modele qui est un std::list (c'est la meme chose qu'un vector, sauf que c'est mieux optimiser pour la suppression d'occurence en milieu (par exemple 5 pour vector1).

    On a donc :

    modele <1,2,4,5,7,12,46>

    vector1 <1,2,4,5,7,12,46>
    vector2 <1,2,3,4,5,6,12>
    vector3 <3,5,7,12>

    L'idée, c'est de comparer le modele a tout les autres vector sauf celui qui a servi de modele (ici c'est vector1) et de trier.

    On prend la premiere valeur de modele et on regarde si elle se trouve dans vector2. Si oui, on la garde, sinon, on la supprime.

    Apres comparaison de modele avec vector2 en appliquant la logique ci dessus, on obtient pour modele :

    modele <1,2,4,5,12> car 7 et 46 ne sont pas present mais les autres si.

    On fait la meme chose avec le suivant (et en l'occurence le dernier) vector : vector3.

    A la fin, on obtient

    modele <5,12>

    "L'intersecion" de tes vector est donc la list modele.

    Je suppose que c'est ce que tu voulait. Si tu ne comprend vraiment pas ma logique, n'hesite pas.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 15/06/2015, 05h09
  2. Partage d'un Vecteur entre plusieurs Servlets et JSP
    Par fizzpass dans le forum Servlets/JSP
    Réponses: 6
    Dernier message: 28/02/2015, 03h58
  3. Communiquer entre plusieurs instances d'applications
    Par bourinator dans le forum C++Builder
    Réponses: 5
    Dernier message: 28/09/2003, 11h24
  4. [math] somme de plusieurs vecteurs à 3 dimensions
    Par teska dans le forum Mathématiques
    Réponses: 5
    Dernier message: 04/06/2003, 21h40
  5. [Technique] Conflits entre plusieurs requêtes
    Par Neowile dans le forum Décisions SGBD
    Réponses: 3
    Dernier message: 24/03/2003, 09h37

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