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 :

vector de vector - header


Sujet :

C++

  1. #1
    Membre confirmé
    Profil pro
    Concepteur traitement de signal
    Inscrit en
    Août 2004
    Messages
    192
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Concepteur traitement de signal
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2004
    Messages : 192
    Par défaut vector de vector - header
    Bonjour

    J'ai un souci et j'arrive pas à mettre le doigt dessus...

    J'ai un fonction qui prend en argument une matrice, ou autrement dit un vecteur de vecteurs. Dans mon header je déclare alors la fonction ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    void __fastcall maFonction(std::vector<std::vector<double> > X, int a, int b, double *tab);
    Seulement, mon compilateur me retourne une erreur : "incorrect method declaration". J'ai pourtant bien inclus le #include<vector>....

    Des idées ? Merci !!!

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 299
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 299
    Par défaut
    Salut, qu'est-ce qu'une matrice ? Tu peux faire un vecteur de longeur n * m, ou bien faire n vecteurs de longueur m ou bien faire un vecteur de longueur n qui contient donc chaque élément est une référence vers une composante d'un autre vecteur de longeur n * m. Bref, il y a bcp de possibilités de faire une "matrice". Bref, si ta fonction prend en entrée une matrice, comment est implémentée cette matrice ?

  3. #3
    Membre Expert
    Avatar de Joel F
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Septembre 2002
    Messages
    918
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2002
    Messages : 918
    Par défaut
    le __fastcall est un truc spécifique MSVC non ? Tu compiles bien avec ça ?

    Ensuite, il serait de bon aloi de passer ton vector<vector> par reference ou reference constante.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 20
    Par défaut
    Bonjour,

    Je suis débutant en C++ et j'ai le même problème que le topic 1.
    C'est à dire que je n'arrive pas à déclarer une fonction avec un vecteur dans mon Headers, pourtant j'ai bien penser à include <vector>

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    #ifndef BIBLIO_H_INCLUDED
    #define BIBLIO_H_INCLUDED
    #include <vector>
     
     
    float moyenne_vect (vector<float> notes) ;
     
    #endif // BIBLIO_H_INCLUDED
    Le but du code est de calculer la moyenne d'un vecteur que je remplis au fur et à mesure.
    Il existe surement d'autres manière de coder mais je souhaite apprendre à déclarer des fonctions avec un vecteur.
    Merci

  5. #5
    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

    Ton problème doit être différent du premier post (il devait avoir un problème de déclaration de sa fonction)

    Tu ne donnes pas le message d'erreur donné par le compilateur, ça aiderait.
    Sinon, c'est peut être un problème d'oublie du namespace std :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    float moyenne_vect (std::vector<float> notes) ;
    FAQ : Comment créer et utiliser un tableau avec std::vector ?
    FAQ : A quoi sert "using namespace std;" ?

  6. #6
    Expert éminent

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par défaut
    En fait, c'est tout simplement que vector (ou ::vector) n'existe pas.
    La classe qui existe est std::vector, la classe vector du namespace std;

    utilise donc std::vector dans ton en-tête.

    D'ailleurs, pour la même raison, à ta place, je placerait cette fonction dans un namespace (math?)

    PS:
    Puisque les namespace semblent t'être un peu méconnus, voici un conseil: n'utilise jamais "using namespace std;" dans un en-tête.
    En effet, ces déclarations polluerait tous les endroits où tu incluearais ton en-tête.

    edit:
    Merci gbdivers pour tes précisions et ta rapidité

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 20
    Par défaut
    Re : Bonjour,

    C'est vrai qu'en écrivant std::vector, cela marche tous de suite.
    Et je viens de comprendre pourquoi en lisant le tuto de gbdivers.

    Donc si j'ai bien compris, pour déclarer une variable vector, on à besoin de faire appelle à std et include<vector>

    Par contre mon IDE écrit par défaut namespace std en en-tête de mon main.cpp
    Mais maintenant je vais l'effacer.

    Merci à vous pour votre rapidité et efficacité

  8. #8
    Expert éminent

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par défaut
    Citation Envoyé par dimitricouturier Voir le message
    Par contre mon IDE écrit par défaut namespace std en en-tête de mon main.cpp
    Mais maintenant je vais l'effacer.
    Pour un .cpp, ce n'est pas génant, voire c'est plus clair.

    Pour le main.cpp, je suis plus hésitant, parce que c'est souvent le fichier où sont utilisés le plus de namespace, et qu'il peut y avoir des collisions. Cela dit, le namespace std est en général peu propice aux collisions, puisque les gens évitent ces noms.

Discussions similaires

  1. Réponses: 5
    Dernier message: 03/05/2007, 00h20
  2. Réponses: 8
    Dernier message: 22/12/2006, 22h36
  3. vector de vector
    Par Clark dans le forum SL & STL
    Réponses: 15
    Dernier message: 07/04/2006, 20h11
  4. [ Vector Fichier ] Vector dans fichier texte
    Par geegee dans le forum Langage
    Réponses: 5
    Dernier message: 21/05/2004, 13h56
  5. [Vector] classe Vector et exception
    Par Nanoua dans le forum Collection et Stream
    Réponses: 6
    Dernier message: 23/04/2004, 12h37

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