Salut,
Savez comment écrire une fonction qui renvoie un tableau de dimension 2?
Salut,
Savez comment écrire une fonction qui renvoie un tableau de dimension 2?
Ne peut tu pas utiliser la STL avec un vecteur ?
Avec N et M les tailles respectives de tes dimensions.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 boost::array<boost::array<T, M>, N> ta_fonction() { }
Justement pour optimiser mon code je préfère tilisé des tableaux.
Je fais un projet sur le "recuit simulé" ou je devrais manipulé plusieurs milliers (millions?) de fois des valeurs contenues dans des tableaux/vecteurs/listes (au choix).
Ici je cherche à récupérer un valeur maximm et minimum contenue dans un fichier texte. Je sais déjà récupérer cela sous forme de liste mais cela risque de ralentir le temps de calcul du recit.
La fonction:
int * sep_termTab2Int(std::string stri){
....
int ele [2];
...
return ele;
}
puis l'appel:
map_Cij[num_L2]=sep_termListDouble(ligne);
ne fonctionne pas
ou tout simplement
Attention ! pour faire cela tu doit connaitre les dimensions du tableau et liberer la memoire occupée par ton tableau
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 type ** tafonction() { }
Merci pour toutes ces réponses
Je ne sais pas encore si je pourrais utiliser boost pour rendre mon projet : il doit tourner sur gcc sous linux .
Je demanderais si on peux ajouter des librairies supplémentaires
(ça fais un peu plus d'un mois que je fais un peu de c++ alors je suis un peu perdue ... d'ailleur je ne sais mais pas importer la librairie boost mais je trouverais ça sur le net!)
Voilà la structure de mes donnés;
un tableau à 2 dimensions prend comme 1er index un numéro (décompte de certaines lignes) qui prend ensuite comme paramétre un tableau de 2 entiers l'entier lu dans le fichier texte (un minimum et un maximum):
données:(nb colonnes =2 , nb lignes variables)
1 2
1 5
3 2
9 15
Ex :
Lecture de la 2éme ligne (ligne 0 et 1):
monTab[1][0]=1;
monTab[1][1]=5;
Soit dans mon code:
La fonction:
int * sep_termTab2Int(std::string stri){
....
int ele [2];
...
return ele;
}
puis l'appel:
//map_Cij : tableau à 2 dimension, num_L2 =num ligne
//sep_termTab2Int(ligne) doit me retouner le tableau de deux int
map_Cij[num_L2]=sep_termTab2Int(ligne);
Je ne voulais pas utiliser un développement orienté objet car c'est plus lent qu'une programmation statique (ce projet auras pour unique objectif l'optimisation d'un recuit simulé).
Finalement je vais créer un objet MinMax qui prend deux int en paramétre et le tour sera joué...
GCC dispose de std::tr1::array, qui est la même chose. (dans <tr1/array> il me semble)Je ne sais pas encore si je pourrais utiliser boost pour rendre mon projet : il doit tourner sur gcc sous linux .
Dans ton cas, ce que tu veux retourner, c'est juste une paire d'entiers. Donc tu peux faire un array (et non pas un tableau, car les tableaux C++ sont hérités du C et ne sont pas copiables) de deux éléments, ou tout simplement une structure avec deux entiers, ce qui est exactement la même chose.
les tableaux ne sont pas copiables directement mais bon, il faut pas charrier quand même, la copie d'un tableau dynamique en C/C++ on aprend ça au bout d'à peine 2mois en DUT informatique c'est quand même surmontable
Et puis... dans son cas ce n'est pas dur a mettre en oeuvre et c'est surtout fichtrement rapide
Merci à vous tous pour cette participation.
Finalement j'ai utilisé des vecteurs ou plutôt des map de vector
Partager