C++ 標準ライブラリのアルゴリズムを実装する方法を知りたいときは、常にhttp://en.cppreference.com/w/cpp/algorithmを調べます。これは優れた情報源です。しかし、実装の詳細を理解できない場合があり、特定の方法で何かが行われる理由を説明する必要があります。たとえば、 の実装ではstd::copy_n
、最初の割り当てがループの外で行われ、ループが で始まるのは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;
}
さらに: 可能なアルゴリズムの実装が説明されているサイトを知っていますか?