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 de déclaration de méthode avec tableau


Sujet :

C++

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2005
    Messages : 5
    Points : 2
    Points
    2
    Par défaut Problème de déclaration de méthode avec tableau
    Salut,

    comment peut-on déclarer une méthode qui renvoie un tableau d'entiers ?

    Je l'ai déclarée comme ceci :

    int[] methode(string str){....}

    et le compilateur me renvoie ce message d'erreur :
    expected unqualified-id before '[' token

  2. #2
    Invité(e)
    Invité(e)
    Par défaut
    Bonjour

    Pour retourner un tableau en c++, j'aurai tendance à conseiller les vector : voir la faq. Ils sont puissants et pratiques à utiliser.

    Je ne suis pas sur qu'on puisse déclarer une fonction qui renvoie un tableau autrement que par des pointeurs. Mais ca, c'est plutôt du C.

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2005
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Et en allant dans ce sens, est-ce qu'il y a moyen de déclarer un vecteur tel qu'il serait utilisable comme un tableau à 2 dimensions?

  4. #4
    Invité(e)
    Invité(e)
    Par défaut
    Oui tout à fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    vector<vector<int> > tableau;
    Et ainsi de suite

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2005
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Je sais que si c'etait un tableau je devrais faire comme ceci :

    int[3][4] tab = {{1,8,4,0},{5,6,7,0},{3,0,2,9}};

    Comment devrais-je faire pour créer ce même tableau mais avec un vecteur?

  6. #6
    Invité(e)
    Invité(e)
    Par défaut
    La méthode resize() ainsi qu'un tour sur la faq devraient suffire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    vector<vector<int> > v;
    v.resize(3);
    for(int i = 0; i < 3; i++)
    {
        v[i].resize(4);
    }
     
    //ou mieux avec #include <algorithm>
    for_each(v.begin(); v.end(); resize(4));
     
    /!\ Attention, je ne suis pas du tout sur de ce dernier exemple de code, mais je me dis qu'un tru ccomme ca doit etre possible

  7. #7
    jmv
    jmv est déconnecté
    Membre confirmé Avatar de jmv
    Profil pro
    Enseignant
    Inscrit en
    Mai 2004
    Messages
    395
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Mai 2004
    Messages : 395
    Points : 603
    Points
    603
    Par défaut
    comme te l'as suggéré mabu, les vectors c'est bien.

    Il y a une autre solution si tes tableaux ont toujours la même taille, c'est de les englober dans une structure
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    struct monTab
    {
        int tab[3][4];
    };
     
    monTab methode(string str);

  8. #8
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Fais un peu de recherche sur ce forum, le sujet est abordé régulièrement.

  9. #9
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2005
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Je voudrais créer une méthode qui revoie un tableau 2D mais apparement il y a un problème lors du remplissage du tableau

    Le compilateur indique ceci après compilation :

    no match for 'operator=' in 'tab[i][j] = (&t)->std::vector<_Tp, _Alloc>::operator[] [with _Tp = int, _Alloc = std::allocator<int>](((unsigned int)j))'

    conversion from `monTab2D (*)[4]' to non-scalar type `monTab2D' requested

    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
     
    #include <vector>
    #include <string>
     
    struct monTab2D
    {
        int tab[3][4];
    };
     
    monTab2D vectToTab(vector<string> v){
     
     
         monTab2D tab[3][4] = {{0,0,0,0},{0,0,0,0},{0,0,0,0}};   
     
               for(int i = 0;i<3; i++){
                    vector<int>t = sCodeToTabNum(v[i]);
                       for(int j = 0;j<3; j++){
                            tab[i][j]= t[j];
                    }
               }
         return tab;
    }
    Merci pour votre aide

  10. #10
    jmv
    jmv est déconnecté
    Membre confirmé Avatar de jmv
    Profil pro
    Enseignant
    Inscrit en
    Mai 2004
    Messages
    395
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Mai 2004
    Messages : 395
    Points : 603
    Points
    603
    Par défaut
    essaye ça :
    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
     
    #include <vector> 
    #include <string> 
    using namespace std;
     
    struct monTab2D 
    { 
        int tab[3][4]; 
    }; 
     
    monTab2D vectToTab(vector<string> v){ 
     
     
         monTab2D tab = {0};    // <= erreur ici
     
               for(int i = 0;i<3; i++){ 
                    vector<int>t = sCodeToTabNum(v[i]); 
                       for(int j = 0;j<3; j++){ 
                            tab.tab[i][j]= t[j];   // <== erreur ici
                    } 
               } 
         return tab; 
    }

  11. #11
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2005
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Merci bien

  12. #12
    Expert éminent sénior
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 279
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 279
    Points : 11 015
    Points
    11 015
    Par défaut
    Il y a un projet de boost qui pemmet de faire proprement ce genre d'initialisations statiques de containers.

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

Discussions similaires

  1. [WD-2007] Problème de bloc de texte avec tableau insécable sur 2 pages ?
    Par PiPo123 dans le forum Word
    Réponses: 5
    Dernier message: 10/01/2012, 03h37
  2. petit problème de déclaration de méthode
    Par zyriuse75 dans le forum Ruby
    Réponses: 1
    Dernier message: 16/11/2010, 23h05
  3. Problème mémoire Java heap space avec tableau et ArrayList
    Par phoenix420 dans le forum Collection et Stream
    Réponses: 45
    Dernier message: 22/06/2010, 10h01
  4. Réponses: 2
    Dernier message: 15/11/2007, 15h15
  5. Problème de déclaration de segment avec use32
    Par le mage tophinus dans le forum Assembleur
    Réponses: 2
    Dernier message: 10/01/2003, 10h17

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