70 votes

C++ essayant d'échanger des valeurs dans un vecteur

Voici ma fonction d'échange :

 template <typename t>
void swap (t& x, t& y)
{
    t temp = x;
    x = y;
    y = temp;
    return;
}

Et c'est mon appel de fonction (sur une note de côté v stocke des chaînes) pour échanger des valeurs, mais chaque fois que j'essaie d'appeler en utilisant des valeurs dans un vecteur, j'obtiens une erreur. Je ne suis pas sûr de ce que je fais mal.

 swap(v[position], v[nextposition]); //creates errors

138voto

Mhd.Tahawi Points 1566

Je pense que ce que vous recherchez est iter_swap que vous pouvez également trouver dans <algorithm> . il vous suffit de passer deux itérateurs pointant chacun sur l'un des éléments que vous souhaitez échanger. puisque vous avez la position des deux éléments, vous pouvez faire quelque chose comme ceci :

 // assuming your vector is called v
iter_swap(v.begin() + position, v.begin() + next_position);
// position, next_position are the indices of the elements you want to swap

26voto

Ólafur Waage Points 40104

Il y a un std::swap dans <algorithm>

5voto

faro_hf Points 99

après avoir passé le vecteur par référence

 swap(vector[position],vector[otherPosition]);

produira le résultat escompté.

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