Lorsque je voudrais savoir comment un algorithme en C++ de la Bibliothèque Standard pourrait être mis en œuvre, je regarde toujours http://en.cppreference.com/w/cpp/algorithmqui est une grande source. Mais parfois, je ne comprends pas les détails de l'implémentation et j'aurais besoin d'une explication des raisons pour lesquelles quelque chose est fait de cette manière. Par exemple, dans la mise en œuvre de l' std::copy_n
, pourquoi la première affectation est faite en dehors de la boucle et la boucle commence donc avec 1
?
template< class InputIt, class Size, class OutputIt>
OutputIt copy_n(InputIt first, Size count, OutputIt result)
{
if (count > 0) {
*result++ = *first;
for (Size i = 1; i < count; ++i) {
*result++ = *++first;
}
}
return result;
}
En outre: connaissez-vous un site où c'est possible des implémentations d'algorithmes sont expliqués?