généralisation du std::swap à n paramètres
Bonjour :D
Voici une implémentation possible du std::swap que nous connaissons tous.
Code:
1 2 3 4 5 6
| template<class T>
void swap(T & l, T & r)
{ T tmp = std::move(l);
l = std::move(r);
r = std::move(tmp);
} |
Et voici le principe de sa généralisation à n paramètres.
Code:
1 2 3 4 5 6 7 8
| template<class T>
void multiple_swap(T & v0, T & v1, ..., T & vn)
{ T tmp = std::move(v0);
v0 = std::move(v1);
v1 = ...;
... = vn;
vn = std::move(tmp);
} |
Existe-t-il en standard ? (pas à ma connaissance)
Une idée d'implémentation généralisée ?
Pour certains algos il serait utile je pense, car pour l'instant il m'arrive d'appeler le swap standard en cascade, ce qui induit des copies évitables.
Merci :D