Rechercher : dans
Par :

Pointeurs vers tableau (C++)

Dernière réponse le 2 jun 2008 à 16:24:25 Loufoca, le 2 jun 2008 à 16:07:31 
 Signaler ce message aux modérateurs

Bonjour,

J'ai écrit un code qui tourne en utilisant des tableaux, mais comme je passe ces tableaux à une fonction sans utiliser de pointeurs (du moins c'est ce que je pense faire), l'exécution prend assez longtemps (je travaille avec beaucoup de données). Le but de ce code est de prendre un tableau, de le diviser en deux selon certains critères et de renvoyer un double qui est le résultat d'un calcul sur les deux moitiés du tableau.

Donc voici en résumé ce que j'utilise et qui marche (j'ai beaucoup simplifié le code histoire de ne laisser que le nécessaire):

// Fonction qui traite le tableau

double split(double complet[][4], int num)  // complet est le tableau entier passé à la fonction, num est le max d'éléments du tableau
{
  // Traitement du tableau, par exemple:
  double half[10][4];
  half[0][0] = complet[0][0];
 ...
 return quelquechose;
}

// Fonction où est créé, initialisé et rempli le tableau

void fonction()
{
   double complet[2000][4]; // tableau qui va être passé à la fonction split

  // Initialisation (pas recopié ici, ce n'est pas nécessaire)
 
 // Remplissage (exemple)
  for(int i = ....)
   {
     for(int j = ....)
      {
         complet[i][j] = i * j;
      }
   }

  double result = split(complet, num);

}


Donc ma question est: comment modifier ce code afin de ne plus passer le tableau complet, mais de passer un pointeur vers ce tableau? (à moins que je me trompe et que je passe déjà un pointeur vers le tableau, dans ce cas je suppose qu'il n'y a pas moyen d'accélérer le truc).

J'ai déjà essayé plusieurs choses, par exemple déclarer double **complet, mais ça coince apparemment.

Merci de votre aide!
Configuration: Linux
Firefox 2.0.0.14

Meilleures réponses pour « Pointeurs vers tableau (C++) » dans :
Google - Recherche des pages qui pointent vers un site donné Voir Avec Google il est possible de trouver les pages web qui pointent vers un site spécifique avec l’opérateur link: (utile pour les webmasters afin de connaître la cote de leur site). Syntaxe à utiliser : link:adresse_du_site Exemple :...
Trier un tableau sans utiliser la fonction sort VoirTrier un tableau sans utiliser la fonction sort D'abord on initialise une variable $max avec la 1ère valeur de tableau. Ensuite on va faire une boucle tant que le tableau contient encore des éléments. C'est avec la fonction splice qui a le rôle...
Les piles en langage C VoirLes piles Requis I. INTRODUCTION II. Définition III. La construction du prototype d'un élément de la pile IV. Opérations sur les piles A. Initialisation B. Insertion d'un élément dans la pile C. Ôter un élément de la pile D. Affichage...
Inverser les éléments d'un tableau -Récursivité- VoirVoici une procédure récursive qui permet d’inverser les éléments d’une partie d’un tableau compris entre la position p et n : Procedure Inverser (Var t : Tab; p, n : Integer); Var aux : Real; Begin If p < n Then ...
Les pointeurs en langage C VoirDéfinition d'un pointeur Un pointeur est une variable contenant l'adresse d'une autre variable d'un type donné. La notion de pointeur fait souvent peur car il s'agit d'une technique de programmation très puissante, permettant de définir des...
Les structures en langage C VoirDifférence entre une structure et un tableau Un tableau permet de regrouper des éléments de même type, c'est-à-dire codés sur le même nombre de bits et de la même façon. Toutefois, il est généralement utile de pouvoir rassembler des éléments de...

1

shuya89, le 2 jun 2008 à 16:13:18
  • +1

Ce que tu devrais montrer ces ta declaration de ta variable

Répondre à shuya89

2

Loufoca, le 2 jun 2008 à 16:15:23

Désolée, je n'ai pas compris à quelle variable tu fais référence :( Tu parles de la déclaration du tableau?

Répondre à Loufoca

3

shuya89, le 2 jun 2008 à 16:16:41
  • +1

Oui c'est ca

Répondre à shuya89

4

 Loufoca, le 2 jun 2008 à 16:24:25

Alors la déclaration et l'initialisation de mon tableau, c'est:

          double complet[2000][4];

	  for(int s=0;s<2000;s++) 
	    {
	      complet[s][0]=0;
	      complet[s][1]=0;
	      complet[s][2]=0;
	      complet[s][3]=0;
	    }


Et ensuite je calcule quelques trucs pour le remplir dans une boucle du même type.

J'espère que c'est ce que tu demandais ^^

Répondre à Loufoca