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
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
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.
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?
Oui tout à fait :
Et ainsi de suite
Code : Sélectionner tout - Visualiser dans une fenêtre à part vector<vector<int> > tableau;
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?
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
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);
Fais un peu de recherche sur ce forum, le sujet est abordé régulièrement.
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
Merci pour votre aide
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; }
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; }
Il y a un projet de boost qui pemmet de faire proprement ce genre d'initialisations statiques de containers.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager