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 :

Problème d'affectation de valeur dans tableau de vecteur 3D.


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Février 2015
    Messages
    169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Février 2015
    Messages : 169
    Par défaut Problème d'affectation de valeur dans tableau de vecteur 3D.
    Bonjour.

    J'ai une structure comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    struct Map
    {
    	SDL_Surface *tileset;
    	std::string nameTileset;
    	std::vector<TileProp> props;
    	std::vector<std::vector<std::vector<int> > > tableMap;
    	int nbtiles_largeur_monde, nbtiles_hauteur_monde, nbCalques, LARGEUR_TILE, HAUTEUR_TILE, nbtilesX, nbtilesY;
    };
    J'initialise toutes mes variables en faisant une lecture d'un fichier txt.

    Là ou j'ai du mal c'est dans cette partie du code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    for (int a(0); a < map.nbCalques; a++)
    {
    	map.tableMap.push_back(std::vector<std::vector<int> >(map.nbCalques - 1));
     
    	for (int b(0); b < map.nbtiles_hauteur_monde; b++)
    	{
    		map.tableMap[a].push_back(std::vector<int>(map.nbtiles_largeur_monde));
     
    		for (int c(0); c < map.nbtiles_largeur_monde; c++)
    		{
    			bufferFichierMap >> map.tableMap[a][b][c];
    		}
    	}
    }
    En gros, j'aimerais un tableau de ce style : map.tableMap[Nombre de calques dans l'image] [Hauteur du monde] [Colonne du monde].

    mon fichiers est comme ceci :

    Calque 1 :
    90 90 90 90 90
    90 90 90 90 90
    90 90 90 90 90
    90 90 90 90 90
    90 90 90 90 90

    Calque 2 :
    26 27 26 27 26
    39 40 39 40 39
    26 27 26 27 26
    39 40 39 40 39
    26 27 26 27 26
    par la suite je supprimerais la ligne avant la ligne Calque 2 : et la ligne Calque 2 : pour coller les 2 calques de cette façon :

    Calques :
    90 90 90 90 90
    90 90 90 90 90
    90 90 90 90 90
    90 90 90 90 90
    90 90 90 90 90
    26 27 26 27 26
    39 40 39 40 39
    26 27 26 27 26
    39 40 39 40 39
    26 27 26 27 26
    mais ce code ne fonctionne pas :

    Nom : Sans titre-1.jpg
Affichages : 184
Taille : 69,1 Ko
    Merci par avance pour votre aide !

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 153
    Billets dans le blog
    4
    Par défaut
    Salut,

    je n'ai pas compris tout ce que tu racontes, mais un triple vector est une hérésie totale.
    http://cpp.developpez.com/faq/cpp/?p...au-de-tableaux

    pi
    ce code ne fonctionne pas...
    n'est pas un message d'erreur..
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  3. #3
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 526
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 526
    Par défaut
    Le compilateur de VS devrait t'indiquer où tu commences à lire la mémoire n'importe comment, mais la remarque de @Bousk reste très pertinente.

  4. #4
    Membre confirmé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Février 2015
    Messages
    169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Février 2015
    Messages : 169
    Par défaut
    L'erreur était à cette ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    map.tableMap.push_back(std::vector<std::vector<int> >(map.nbCalques - 1));
    il me faut supprimer map.nbCalques - 1 ce qui donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    map.tableMap.push_back(std::vector<std::vector<int> >());
    et là ça fonctionne.

    Je ne comprends pas trop pourquoi vous dites que c'est une hérésie totale ?

  5. #5
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 526
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 526
    Par défaut
    cf. la FAQ que @Bousk a donnée dans son post.

  6. #6
    Membre confirmé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Février 2015
    Messages
    169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Février 2015
    Messages : 169
    Par défaut
    non pardon je vais formuler ma réponse autrement :

    il est le plus souvent sensiblement plus facile d'implémenter l'approche operator() que l'approche operator[][].
    En gros c'est ce qu'il est dit tout le long ! Mais je ne sais pas comment l'utiliser en guise de remplacement dans mon code en fait !

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

Discussions similaires

  1. Problème pour affecter une valeur dans une JSP
    Par chady dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 12/03/2015, 00h16
  2. Réponses: 10
    Dernier message: 07/07/2011, 23h39
  3. Réponses: 0
    Dernier message: 20/04/2009, 11h09
  4. [vbscript] valeur dans tableau ?
    Par niglo dans le forum ASP
    Réponses: 3
    Dernier message: 08/06/2005, 13h26
  5. problème our passer des string dans tableau d'int
    Par Battosaiii dans le forum C++
    Réponses: 9
    Dernier message: 15/07/2004, 17h42

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