[C++] manipulation de tableau a l'aide des references ?

manipulation de tableau a l'aide des references ? [C++] - C++ - Programmation

Marsh Posté le 01-03-2014 à 01:55:43    

Bonsoir,

 

Est-il possible de manipuler les tableaux (sans la STL) via les références, si oui comment ?

 

Voici une fonction que j'essai d'adapter :

Code :
  1. int* copie (const int* tab_s, const int taille = 2)
  2. {
  3.     int* tab_t = new int[taille];
  4.     for (int i = 0; i < taille; i++)
  5.         *(tab_t+i) = *(tab_s+i);
  6.     return tab_t;
  7. }
 

en quelque chose du genre :

 
Code :
  1. int& copie (const int tab_s[]&, const int taille = 2 ) // le compilo (g++ 4.8.1) rejette le "&" du premier argument.
  2. {
  3.     int tab_t[] = new int[taille];
  4.     for (int i = 0; i < taille; i++ )
  5.         tab_t[i]=tab_s[i];
  6.     return tab_t;
  7. }



Message édité par bqron le 01-03-2014 à 02:55:39

---------------
The success, is a progressive realization of a worthy ideal
Reply

Marsh Posté le 01-03-2014 à 01:55:43   

Reply

Marsh Posté le 01-03-2014 à 19:29:06    

Ce que tu peux faire, c'est ce type de chose:
 

Code :
  1. template<typename T, size_t N>
  2. T* copie(T(&in_tab)[N])
  3. {
  4.     T *out_tab = new T[N];
  5.     for (int i = 0; i < N; ++i )
  6.          out_tab[i] = in_tab[i];
  7.     return out_tab;
  8. }


 
Mais bon, pas vouloir utiliser std::copy, c'est avoir une propension au masochisme.
 
A+,


Message édité par gilou le 01-03-2014 à 19:36:32

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 03-03-2014 à 01:01:26    

Enfin là cela reste toujours de l'utilisation pointeurs... Pourtant en C++, il me parait avoir lut que l'utilisation des pointeurs pouvaient être totalement omit grâces aux références.
 
Merci tout de même. :jap:


---------------
The success, is a progressive realization of a worthy ideal
Reply

Marsh Posté le 03-03-2014 à 03:19:19    

Euh, dans mon exemple, seul le type de retour est un pointeur, et cela provient de son allocation dynamique avec new[]
 
Si je veux faire une fonction qui a comme paramètre une référence sur un T[N] et résultat une référence sur un T[N] je dois faire ainsi:
 
template<typename T, size_t N>
T (&fonction(T(&in_tab)[N]))[N]
{
  .............  
}
 
Mais si j'alloue dynamiquement le tableau de retour avec new[], qui renvoie un pointeur, alors on est bien obligé de faire
template<typename T, size_t N>
T *fonction(T(&in_tab)[N])
{
  .............  
}
 
A+,


Message édité par gilou le 03-03-2014 à 03:23:07

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Sujets relatifs:

Leave a Replay

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