OVH Cloud OVH Cloud

Echanger deux tableaux

1 réponse
Avatar
Bruno CAUSSE
Bonsoir,

comment transformer ce code en c++

En java

int[] tab_1 = new int[10];
int[] tab_2 = new int[10];

//swap
int[] temp = tab_1;
tab_1 = tab_2;
tab_2 = temp;

En fait j'echange 2 pointeurs (ce qui m'echange "virtuellement" mes deux
tableaux).

Avec deux tableaux en allocation auto (pile)
Un tableau auto (pile) avec un tableau (tas)
Deux tableaux tas (ce cas la est trivial, il me semble)

Merci

1 réponse

Avatar
Falk Tannhäuser
Bruno CAUSSE wrote:

Avec deux tableaux en allocation auto (pile)
Un tableau auto (pile) avec un tableau (tas)


std::swap_ranges(tab_1, tab_1 + N, tab_2);

à condition que les deux tableaux aient le même nombre
d'éléments N. Par contre, la complexité est de O(N).

Deux tableaux tas (ce cas la est trivial, il me semble)


Effectivement, si tab_1 et tab_2 sont des pointeurs, il suffit
d'un
std::swap(tab_1, tab_2);
avec une complexité O(1).

En revanche, en C++, on utilise les tableaux "intégrés" uniquement en
cas de nécessité absolue et on se sert de std::vector si possible.
La bonne novelle est que
std::vector<int> tab_1, tab_2;
...
std::swap(tab_1, tab_2);
fonctionne aussi avec une complexité O(1).


Falk