3 votes

Echanger des tableaux

Y a-t-il un library fucntion pour échanger les valeurs dans deux tableaux alloués dynamiquement.
Supposons que je déclare et initialise mes tableaux comme suit :

int * a = new int[10];
int * b = new int[5];
for(int i = 0; i < 10; i++){
a[i] = i + 1;   //stores a[10] = {1,2,3,4,5,6,7,8,9,10}
}  
for(int i = 0; i < 5; i++){
b[i] = i + 1;   //stores b[5] = {1,2,3,4,5}
}  
swap(a,b);  

Et je m'attends à ce que le a à stocker : {1, 2, 3, 4, 5}
Et le tableau b doivent être stockées : {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}

4voto

Blaze Points 16456

Il suffit de permuter les pointeurs. Vous pouvez utiliser std::swap pour ça.

#include <algorithm>

int main(int argc, char *argv[])
{
    int * a = new int[10];
    int * b = new int[5];
    for (int i = 0; i < 10; i++) {
        a[i] = i + 1;   //stores a[10] = {1,2,3,4,5,6,7,8,9,10}
    }
    for (int i = 0; i < 5; i++) {
        b[i] = i + 1;   //stores b[5] = {1,2,3,4,5}
    }

    std::swap(a, b);
    for (int i = 0; i < 5; i++)
        std::cout << a[i] << " ";
    std::cout << endl;
    for (int i = 0; i < 10; i++)
        std::cout << b[i] << " ";
}

Sortie :

1 2 3 4 5
1 2 3 4 5 6 7 8 9 10

La mémoire allouée dynamiquement n'est pas touchée de cette façon, la seule chose qui change est la valeur des pointeurs. a y b .

-1voto

Brother Wei Points 13

Vous avez juste besoin de changer la valeur de deux pointeurs, donc le paramètre est l'adresse du pointeurint **.

int main(int argc, char *argv[])
{
     int * pA = new int[10];
     int * pB = new int[5];
     if(NULL != pA && NULL != pB)
     {
         for (int i = 0; i < 10; i++)
         {
            a[i] = i + 1;
         }
         for (int i = 0; i < 5; i++) 
         {
             b[i] = i + 1;
         }
         swap(&pA,&pB);
         for (int i = 0; i < 5; i++)
         {
            cout << a[i] << " ";
         }
         cout << endl;
         for (int i = 0; i < 5; i++) 
         {
            cout << b[i] << " ";
         }
     }
 }

 void swap(int**pA, int **pB)
 {
     int *pTemp = *pA;
     *pA = *pB;
     *pB = pTemp;
 }

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X