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 :

Syncronisation de vecteurs


Sujet :

SL & STL C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Avatar de TheDrev
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    310
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 310
    Par défaut Syncronisation de vecteurs
    Bonjour, j'aimerai savoir comment synchroniser deux vecteurs de pointeurs.

    Voici un petit exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    #include <iostream>
    #include <vector>
     
    using namespace std;
     
    class Bidon
    {
    	public: 
    	Bidon(int Numero);
    	int Numero;
    };
     
    Bidon::Bidon(int Numero)
    {
    	this->Numero = Numero;
    }
     
    int main (void)
    {
    	int i;
    	Bidon *TempBidon;
    	vector <Bidon *>vecPremier;
    	vector <Bidon *>vecSecond;
     
    	//Ajout et syncronisation
    	for(i=0;i<5;i++){
    		vecPremier.push_back(TempBidon = new Bidon(i));		//ajout
    		vecSecond.push_back(vecPremier.back());				//Syncronistion
    	}
     
    	//Affichage du numero bidon et du pointeur des deux vecteurs
    	for(i=0;i<vecPremier.size();i++){
    		cout << "Premier : " << vecPremier.at(i)->Numero << " &"<< vecPremier.at(i) << " Second : " <<	vecSecond.at(i)->Numero << " &" << vecSecond.at(i) << endl;
    	}	
     
    	//Supprimer quelques instances dans le premier vecteur
    	vecPremier.erase(vecPremier.begin() + 2);
    	vecPremier.erase(vecPremier.begin() + 3);
     
    	cout << endl;
     
    	//Affichage du numero de bidon et du pointeur dans le premier vecteur 
    	for(i=0;i<vecPremier.size();i++){
    		cout << "Premier : " << vecPremier.at(i)->Numero << " &"<< vecPremier.at(i) << endl;
    	}	
     
    	cout << endl;
     
    	//Affichage du numero bidon et du pointeur dans le second  vecteur 
    	for(i=0;i<vecSecond.size();i++){
    		cout << "Second : " << vecSecond.at(i)->Numero << " &"<< vecSecond.at(i) << endl;
    	}	
    }

    Sortie :

    Premier : 0 &0x3d2450 Second : 0 &0x3d2450
    Premier : 1 &0x3d24d8 Second : 1 &0x3d24d8
    Premier : 2 &0x3d24c8 Second : 2 &0x3d24c8
    Premier : 3 &0x3d24b8 Second : 3 &0x3d24b8
    Premier : 4 &0x3d24e8 Second : 4 &0x3d24e8

    Premier : 0 &0x3d2450
    Premier : 1 &0x3d24d8
    Premier : 3 &0x3d24b8

    Second : 0 &0x3d2450
    Second : 1 &0x3d24d8
    Second : 2 &0x3d24c8
    Second : 3 &0x3d24b8
    Second : 4 &0x3d24e8
    _______________________________
    En finale, il faudrait que le second vecteur contienne
    Second : 0 &0x3d2450
    Second : 1 &0x3d24d8
    Second : 3 &0x3d24b8

    J'ai deja essaye en comparent les adresses, mais sur des applications plus grandes, elle peuvent évidement changer en cours de vérification !
    Mais comment faire ?

  2. #2
    Membre Expert

    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 294
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 294
    Par défaut
    Salut,

    Si tu ne supprimes pas les pointeurs du second vecteur, ça ne va pas se faire magiquement...

    Est-ce que ton problème ne serait pas plutôt de savoir comment organiser les choses pour qu'un seul 'module' (mettons une classe pour simplifier) soit responsable des éléments et que les autres 'modules' soient avertis quand de nouveaux éléments sont créés ou que certains sont supprimés ?

    MAT.

  3. #3
    Membre très actif
    Avatar de TheDrev
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    310
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 310
    Par défaut
    Salut,

    Je n 'ai pas mis mon code qui compare les pointeurs pour determiner lesquelles supprimer, car il est mauvais.

    Cependant tu as bien resumer mon probleme... j ai cherché sur le forum des solutions mais je n ai pas compris.

  4. #4
    Membre Expert

    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 294
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 294
    Par défaut
    Hmm en fait non j'avais sans doute mal compris ton problème...
    Est-ce que tu as regardé cette entrée de la FAQ ? Ça ne répond pas à ta question ?

    MAT.

  5. #5
    Membre très actif
    Avatar de TheDrev
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    310
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 310
    Par défaut
    Ceci ne répond qu' a moiter a mon problème.
    Je cherche effectivement a supprimer des element dans un vecteur, mais pas en fonction de la valeur (un int dans l exemple de la faq), mais en fonction du pointeur même.

    Ceci me permettra de supprimer des instances de classes qui n'ont plus lieu d'être dans un vecteur , puisque que leur clone (pointeur a la même adresse, dans un autre vecteur) à été supprimé.

    J'espère que je m'exprime correctement, sinon n' hésitez pas a me faire préciser certains points.

  6. #6
    Membre Expert

    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 294
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 294
    Par défaut
    Citation Envoyé par TheDrev Voir le message
    Je cherche effectivement a supprimer des element dans un vecteur, mais pas en fonction de la valeur (un int dans l exemple de la faq), mais en fonction du pointeur même.
    Dans la FAQ le vecteur stocke des int, dans ton code le vecteur stocke des Bidon* (donc des pointeurs sur Bidon). Tout ce qui est fait sur des entiers dans l'exemple de la FAQ est transposable pour des pointeurs sur Bidon dans ton cas.

    Fais voir à quoi ressemble ton code pour retirer un pointeur du vecteur (tu peux tout à fait t'inspirer de l'exemple de la FAQ pour l'écrire) ?

    MAT.

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

Discussions similaires

  1. Utilisation des vecteurs
    Par EmilieG dans le forum MFC
    Réponses: 12
    Dernier message: 19/03/2004, 16h28
  2. [math] somme de plusieurs vecteurs à 3 dimensions
    Par teska dans le forum Mathématiques
    Réponses: 5
    Dernier message: 04/06/2003, 21h40
  3. Récuperer les coordonnées d'un vecteur
    Par kerzut dans le forum OpenGL
    Réponses: 5
    Dernier message: 15/04/2003, 11h51
  4. Zoom sur des vecteurs ou lignes
    Par mat.M dans le forum Algorithmes et structures de données
    Réponses: 7
    Dernier message: 25/11/2002, 10h40
  5. matrices * vecteur
    Par delire8 dans le forum Algorithmes et structures de données
    Réponses: 15
    Dernier message: 07/09/2002, 14h15

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