Accesseur sur un tableau

Accesseur sur un tableau - C++ - Programmation

Marsh Posté le 22-09-2010 à 20:37:14    

Bonjour !
 
Je débute en c++ et j'aurais aimé connaître la meilleure méthode pour faire un accesseur sur un tableau.  
 
J'ai une classe du type:
 

Class A{
protected:
int tableau[2]
}


et j'aimerais faire un accesseur sur ce tableau. En java j'aurais fait une copie et je l'aurais retourné directement mais en c++ je ne sais pas trop... En C je me serais arrangé pour ne pas avoir à faire un truc comme ça ou sinon je l'aurais encapsulé dans une struct ou j'aurais fournis un tableau à l'accesseur du style: getTableau(int * destination,int taille_tab)
 
Mais en C++ je ne sais pas quelle est la méthode la plus efficace.
 
Des idées ?
 
Merci

Reply

Marsh Posté le 22-09-2010 à 20:37:14   

Reply

Marsh Posté le 22-09-2010 à 22:13:12    

une idée de réponse peut être trouvée ici: http://www.developpez.net/forums/d [...] r-vecteur/
 
c'est avec un vecteur et pas un tableau, mais c'est assez utile

Reply

Marsh Posté le 22-09-2010 à 22:17:59    

Je sais pas si c'est la meilleure méthode, mais c'est comme ça que je fais.
 
 

Code :
  1. class A
  2. {
  3. private:
  4. int * tableau;
  5. public:
  6. A(int i = 5){tableau = new int[5];};
  7. int & GetCase(int rang){return tableau[rang];};
  8. };

Reply

Marsh Posté le 22-09-2010 à 22:58:59    

tu peut renvoyer le tableau par valeur. la NRVO va se charger d'optimiser tout ça.

Reply

Marsh Posté le 23-09-2010 à 04:53:46    

qu'est-ce que tu entends retourner le tableau par valeur ? faire comme snafu8 en enlevant le & ? (d'ailleurs, je ne vois pas trop quelle est sont utilité ici...)

Reply

Marsh Posté le 23-09-2010 à 08:45:48    

1/ utilise std::array ou boost::array au lieu d'unt ableau nu
2/

 
Code :
  1. class A
  2. {
  3.   boost::array<int,2> const getData() const { return data; }
  4.   protected:
  5.   boost::array<int,2> data;
  6. }
 

L'article sur la (N)RVO : http://cpp-next.com/archive/2009/0 [...] -by-value/

Message cité 1 fois
Message édité par Joel F le 23-09-2010 à 08:46:24
Reply

Marsh Posté le 23-09-2010 à 15:06:21    

okay merci

Reply

Marsh Posté le 23-09-2010 à 22:23:07    

Joel F a écrit :

1/ utilise std::array ou boost::array au lieu d'unt ableau nu
2/
 

Code :
  1. class A
  2. {
  3.   boost::array<int,2> const getData() const { return data; }
  4.   protected:
  5.   boost::array<int,2> data;
  6. }


 
L'article sur la (N)RVO : http://cpp-next.com/archive/2009/0 [...] -by-value/


 il faut tout le temps retourner par valeur et passer les arugments par valeur ?


---------------
.
Reply

Marsh Posté le 23-09-2010 à 23:31:20    

on peut passer les paramètres par référence constante non ?

Reply

Marsh Posté le 24-09-2010 à 07:22:16    

Comme indiqué dans les commentaires de l'article, ça dépend.
Les retours apr valeurs s'optimisent très bien tout seul
Pour les paramètres, il ne faut passer par valeur que les parametres sur lequels nous auriont fait une copie de toute façon.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed