Passer un vector en argument d'un fonction
Bonjour,
Je cherche à passer un vector en argument d'une fonction, je n'ai pas vu dans la section de la FAQ STL quelque chose pouvant m'aidier aussi je me tourne vers vous voilà le code que j'utilise dans le main :
Code:
1 2 3 4 5 6 7
|
vector<TH1D*> SA_pTl_MCtru_histos ;
for(int i=0 ; i<=nb_of_sa ; i++)
{
(...)
SA_pTl_MCtru_histos.push_back( current_SA_histo ) ;
} |
Et voilà à quoi ressemble la fonction dans sa déclaration :
Code:
1 2 3
|
TCanvas * Make_lla (TH1D * data, vector<TH1D*> samples,
string * options) |
aprèes avoir fait pas mal de recherche il s'avère que le passage du voector est al source de mes problèmes, pouvaez vosu me dire comment vous feriez pour la déclaration de l afonction et le passage en argument ? Merci
Problème fonction et vecteur référent
Bonjour,
Citation:
Envoyé par
millie
Sinon, il faut passer le std::vector par référence, et surtout pas directement :
Code:
1 2 3 4 5 6 7 8 9
|
void mafonction(std::vector<int> & test) {
std::cout<<test.size();
}
void appelant(void) {
std::vector<int> vecteur;
mafonction(vecteur);
} |
Je ne suis pas sûre de vraiment comprendre. :aie:
Dans ton code, quand tu appelles ta seconde fonction "appelant" il n'y a pas d'argument, donc pas de possibilité de "sortir" un vecteur (même par référent) Nan? :?
Je suis interloqué car j'ai des problèmes avec les fonctions et les vecteurs (en référent). Voici le code pour comparer deux chaines de caractères:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| #include <vector>
// comparer le mot proposé avec la solution : précise les lettres bien placées
void comparateur (string mot_initial, string mot_propose, vector<int> & compare_lettre())
{
int taille_mot(mot_initial.size());
// vector<int> compare_lettre (taille_mot);
for (int i(0); i<taille_mot; i++)
{
if (mot_initial[i]=mot_propose[i])
{
compare_lettre.push_back(1) ;
}
else
{
compare_lettre[i](0);
}
}
} |
Quoi que j'écrive le compilateur m'affiche un message d'erreur.
1er IF
error: request for member 'push_back' in 'compare_lettre', which is of non-class type 'std::vector<int, std::allocator<int> >& (*)()'|
2em IF
error: too many arguments to function|
Et si je force la taille du vecteur (ligne avec une déclaration de vecteur en commentaire)
error: declaration of 'std::vector<int, std::allocator<int> > compare_lettre' shadows a parameter|
J'espère que j'ai été assez claire :roll:.