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 :

copie de matrice


Sujet :

C++

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    299
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 299
    Points : 140
    Points
    140
    Par défaut copie de matrice
    Bonjour,

    j'ai une matrice static :

    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
    int temp_costMatrix[NB_AA][NB_AA]={
    {9, -1, -1, -3,  0, -3, -3, -3, -4, -3, -3, -3, -3, -1, -1, -1, -1, -2, -2, -2},
    {-1,  4,  1, -1,  1,  0,  1,  0,  0,  0, -1, -1,  0, -1, -2, -2, -2, -2, -2, -3},
    {-1,  1,  5, -1,  0, -2,  0, -1, -1, -1, -2, -1, -1, -1, -1, -1,  0, -2, -2, -2},
    {-3, -1, -1,  7, -1, -2, -2, -1, -1, -1, -2, -2, -1, -2, -3, -3, -2, -4, -3, -4},
    {0,  1,  0, -1,  4,  0, -2, -2, -1, -1, -2, -1, -1, -1, -1, -1,  0, -2, -2, -3},
    {-3,  0, -2, -2,  0,  6,  0, -1, -2, -2, -2, -2, -2, -3, -4, -4, -3, -3, -3, -2},
    {-3,  1,  0, -2, -2,  0,  6,  1,  0,  0,  1,  0,  0, -2, -3, -3, -3, -3, -2, -4},
    {-3,  0, -1, -1, -2, -1,  1,  6,  2,  0, -1, -2, -1, -3, -3, -4, -3, -3, -3, -4},
    {-4,  0, -1, -1, -1, -2,  0,  2,  5,  2,  0,  0,  1, -2, -3, -3, -2, -3, -2, -3},
    {-3,  0, -1, -1, -1, -2,  0,  0,  2,  5,  0,  1,  1,  0, -3, -2, -2, -3, -1, -2},
    {-3, -1, -2, -2, -2, -2,  1, -1,  0,  0,  8,  0, -1, -2, -3, -3, -3, -1,  2, -2},
    {-3, -1, -1, -2, -1, -2,  0, -2,  0,  1,  0,  5,  2, -1, -3, -2, -3, -3, -2, -3},
    {-3,  0, -1, -1, -1, -2,  0, -1,  1,  1, -1,  2,  5, -1, -3, -2, -2, -3, -2, -3},
    {-1, -1, -1, -2, -1, -3, -2, -3, -2,  0, -2, -1, -1,  5,  1,  2,  1,  0, -1, -1},
    {-1, -2, -1, -3, -1, -4, -3, -3, -3, -3, -3, -3, -3,  1,  4,  2,  3,  0, -1, -3},
    {-1, -2, -1, -3, -1, -4, -3, -4, -3, -2, -3, -2, -2,  2,  2,  4,  1,  0, -1, -2},
    {-1, -2,  0, -2,  0, -3, -3, -3, -2, -2, -3, -3, -2,  1,  3,  1,  4, -1, -1, -3},
    {-2, -2, -2, -4, -2, -3, -3, -3, -3, -3, -1, -3, -3,  0,  0,  0, -1,  6,  3,  1},
    {-2, -2, -2, -3, -2, -3, -2, -3, -2, -1,  2, -2, -2, -1, -1, -1, -1,  3,  7,  2},
    {-2, -3, -2, -4, -3, -2, -4, -4, -3, -2, -2, -3, -3, -1, -3, -2, -3,  1,  2, 11}};
    et j'aimerai la copier dans une matrice dynamique :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    int ** costMatrix;
    costMatrix=new int*[NB_AA];
    for(int i=0; i<NB_AA; i++){
    	costMatrix[i]=new int [NB_AA];
    }

    J'ai essayer avec memcpy mais cela fonctionne pas, est ce que quelqu'un à une idée?

    merci

    Alaninho

  2. #2
    Inactif  


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

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2008
    Messages : 5 288
    Points : 15 617
    Points
    15 617
    Par défaut
    Puisque l'on est sur le forum C++...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    vector<int> costMatrix(temp_costMatrix, temp_costMatrix+NB_AA*NB_AA);
    Voir un initializer-list si tu utilises du C++11

  3. #3
    Membre éprouvé

    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    533
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 533
    Points : 1 086
    Points
    1 086
    Par défaut
    Le vector<int> risque de ne pas fonctionner tel quel puisque temp_costMatrix n'est pas une matrice de NB_AA*NB_AA entiers, mais une matrice de NB_AA pointeurs vers des tableaux de NB_AA entiers...

    Je verrais plutôt quelque chose comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    std::vector<int> mat;
    mat.reserve(NB_AA*NB_AA);
     
    for (int i=0; i<NB_AA; i++)
    {
    	mat.insert(mat.end(), temp_costMatrix[i], temp_costMatrix[i] + NB_AA);
    }

  4. #4
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 012
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 012
    Points : 23 137
    Points
    23 137
    Par défaut
    Citation Envoyé par cob59 Voir le message
    Le vector<int> risque de ne pas fonctionner tel quel puisque temp_costMatrix n'est pas une matrice de NB_AA*NB_AA entiers, mais une matrice de NB_AA pointeurs vers des tableaux de NB_AA entiers...
    Non, les matrices statiques sont toutes stockées sur "une dimension".

    Il ne faut pas confondre tableau de pointeurs et tableau de tableaux.
    Dans un tableau de tableaux, tous les éléments sont consécutifs et il n'y a pas de pointeurs sur tableau.

  5. #5
    Membre éprouvé

    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    533
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 533
    Points : 1 086
    Points
    1 086
    Par défaut
    Au temps pour moi !
    Ça veut dire que temp_costMatrix[2] renverrait non pas un pointeur mais une référence sur un tableau, de type int(&)[NB_AA] ?

  6. #6
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 012
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 012
    Points : 23 137
    Points
    23 137
    Par défaut
    Citation Envoyé par cob59 Voir le message
    Au temps pour moi !
    Ça veut dire que temp_costMatrix[2] renverrait non pas un pointeur mais une référence sur un tableau, de type int(&)[NB_AA] ?
    temp_costMatrix[2] va renvoyer sa propre adresse. ll y a une conversion explicite des tableaux en pointeurs. La valeur de temp_costMatrix[2] est l'ensemble des éléments contenu dans celui-ci.
    temp_costMatrix[0] est un tableau qui commence à la même adresse que temp_costMatrix et que temp_costMatrix[0][0].

Discussions similaires

  1. faire une copie de matrice
    Par SHILI1 dans le forum C++
    Réponses: 3
    Dernier message: 09/05/2013, 18h38
  2. [Débutant] Copie d'une ligne prédéfinie x fois dans une matrice
    Par franck34matlab dans le forum Images
    Réponses: 7
    Dernier message: 12/01/2013, 11h22
  3. boucle for, copie de matrice et concatenation
    Par Tibtib dans le forum MATLAB
    Réponses: 6
    Dernier message: 31/03/2010, 18h18
  4. Copie de matrices
    Par Javabad dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 07/05/2008, 09h21
  5. matrice et copie
    Par dev0077 dans le forum C++
    Réponses: 6
    Dernier message: 07/10/2007, 14h27

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