2009-11-01 6 views
0

Je tente de décaler ma matrice vers la gauche aussi efficacement que possible. Im en utilisant des pointeurs maintenant et im avoir du mal à affecter les valeurs de retour dans mon tableau:Pointer pour décaler le tableau C++

void stack::rotate(int nRotations) 
{ 
    if (count <= 1) return; 

    int *intFrontPtr = &items[top+1].n; 
    int *intBackPtr = &items[count-1].n; 
    int temp = 0; 

    for (int shift = 0; nRotations != 0 ;) 
    { 
     if (nRotations > 0) // we rotate left 
     { 
      temp = *++intFrontPtr; // give temp the value 
      items[++shift].n = temp; // debug shows success 
      if (shift == count) // dont overrun array 
      { 
       temp = *intBackPtr; 
       items[count-1].n = temp; 
       shift = 0; // reset for another rotation 
       nRotations--; // decrement we have reached the end 
      } 
     } 

    } 
} 
+1

Vous obtiendrez probablement plus d'aide si vous avez accepté les réponses plus de 21% du temps. – cdiggins

+0

Et aussi s'il n'a pas répété la même question encore et encore ... –

+0

Trop n'est pas donné pour répondre à cette question ... Par exemple, où est "top" défini ... Qu'est-ce que "n"? – dicroce

Répondre

4

C++ a une fonction installees dans <algorithm>. Appelez simplement std::rotate(front_ptr, front_ptr + N, back_ptr);

+0

se référant à l'adresse des éléments pourrait être le problème? – user40120

+0

J'ai besoin de résoudre ce .. pourquoi la valeur ne sera-t-elle pas transférée? – user40120