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

Langage C++ Discussion :

Problème d'insertion dans un vector. à cause des const.


Sujet :

Langage C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2011
    Messages : 5
    Par défaut Problème d'insertion dans un vector. à cause des const.
    Bonjour,

    j'ai le code suivant :

    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
    vector < vector < Vertice > > Algorithm::bestInsertion(Vertice &verticeToInsert, vector < vector < Vertice > >&tempSolution) const {
    	vector < vector < Vertice > > bestSolution;
     
    	double solutionWeight = 0.0;
     
    	for (unsigned int i=0; i < tempSolution.size(); i++) {
    		for (unsigned int j=0; j <= tempSolution.at(i).size(); j++) {
    			vector < vector < Vertice > > mySolutionCopy = tempSolution;
    			vector<Vertice>::const_iterator it = mySolutionCopy.at(i).begin();
    			mySolutionCopy.insert(it, verticeToInsert);
    			solutionWeight = getSolutionWeight(mySolutionCopy);
    			printf("poids %f \n",solutionWeight);
    		}
    	}
     
    	return bestSolution;
     
    }
    Qui me sort une erreur comme celle-ci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Error	1	error C2664: 'std::_Vector_iterator<_Myvec> 
    std::vector<_Ty>::insert<Vertice&>(std::_Vector_const_iterator<_Myvec>,_Valty)' : 
    cannot convert parameter 1 from 'std::_Vector_const_iterator<_Myvec>' to 
    'std::_Vector_const_iterator<_Myvec>'
    à la ligne du insert()

    Les deux paramètres de l'erreur sont les même.... je ne vois donc pas comment procéder... qqn a déjà eu ce type de problème?

    Merci,

  2. #2
    Inactif  


    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2008
    Messages : 5 288
    Par défaut
    Bonjour

    N'utilise pas de const_iterator :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    vector<Vertice>::iterator it = mySolutionCopy.at(i).begin();
    Remarques en vrac :
    * ton code ne fait rien puisque tu travailles sur une copie de ton vector (mySolutionCopy) qui est détruit après le printf et tu ne modifies jamais bestSolution
    * tu fais beaucoup de copies (probablement inutiles) des tes vector
    * utilise cout au lieu de printf en C++
    * il y a probablement une solution plus élégante à ton problème (mais je n'ai pas compris la finalité de ce que tu veux faire) dans la STL algorithm

    Bon courage

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 766
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 766
    Par défaut
    Hello,

    Bon, déjà, ce code est difficile à lire. Je me demande pourquoi tu as besoin de vecteurs de vecteurs de sommets. Tu pourrais préciser le contexte ?

    Commence tout d'abord par prendre en compte les remarques de gbdivers.

    Ensuite, puisqu’apparemment, tu fais des insertions en début de vecteurs, tu ferais mieux d'utiliser des deque (au moins pour remplacer le vecteur interne).

    Tu devrais également jeter un œil sur Boost.Foreach.

    Peut-être qu'on y verra plus clair après.

  4. #4
    screetch
    Invité(e)
    Par défaut
    le const_iterator marche très bien, le problème c'est que tu n'as copié que la moitié de l'erreur.
    L'autre moitié te dis que _MyVec dans le premier cas est un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    vector < vector < Vertice > >
    et le deuxieme est un tu t'es melangé les pinceaux avec tes vector de vector.

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 766
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 766
    Par défaut
    Citation Envoyé par screetch Voir le message
    tu t'es melangé les pinceaux avec tes vector de vector.
    Il y a de quoi. :-)

Discussions similaires

  1. Réponses: 1
    Dernier message: 20/12/2014, 10h14
  2. Réponses: 2
    Dernier message: 21/04/2012, 23h53
  3. [MySQL] problème d'insertion dans des tables qui contiennent des clés étrangère
    Par shurik'n dans le forum PHP & Base de données
    Réponses: 0
    Dernier message: 13/04/2012, 21h32
  4. problème d'insertion dans des tables ?
    Par Invité dans le forum Oracle
    Réponses: 7
    Dernier message: 05/08/2009, 12h29

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