En C++ 98, je peux copier des plages avec l'algorithme std::copy
.Existe-t-il un algorithme pour les plages mobiles?
std::copy(source.begin(), source.end(), destination.begin());
Existe-t-il un algorithme en C++ 0x qui déplace les éléments de la source à la destination? Ou est std::copy
en quelque sorte surchargé d'accepter quelque chose comme itérateurs rvalue - y at-il même une telle chose?
L'algorithme pourrait ressembler à ceci:
#include <utility>
template<class InputIterator, class OutputIterator>
OutputIterator mooove(InputIterator first, InputIterator last, OutputIterator result)
{
for (; first != last; ++first, ++last) *result = std::move(*first);
return result;
}
Que voulez-vous dire par "déplacer"? –
Appel de l'affectation de déplacement 'operator = (T &&)' à la place de l'affectation de copie 'operator = (const T &)' pour chaque élément de la plage. – fredoverflow
donc l'algorithme va modifier la plage de la source, au lieu de la copie - il va «couper» les éléments? –