当我想知道如何实现 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;
}
另外:您知道解释可能的算法实现的网站吗?