下面是直接从C++中std::merge的链接(在结尾处给出)获取的代码。我了解while循环(复制部分)内部发生的情况,但我不知道该循环何时结束。由于while (true)
,此循环不应永远运行吗?
template <class InputIterator1, class InputIterator2, class OutputIterator> OutputIterator
merge (InputIterator1 first1, InputIterator1 last1,
InputIterator2 first2, InputIterator2 last2,
OutputIterator result)
{
while (true) {
if (first1==last1) return std::copy(first2,last2,result);
if (first2==last2) return std::copy(first1,last1,result);
*result++ = (*first2<*first1)? *first2++ : *first1++;
}
}
http://www.cplusplus.com/reference/algorithm/merge/
最佳答案
在每次迭代中,first1
或first2
都会增加,因此在某个时刻它们之一将分别等于last1
或last2
(只要正确指定了参数),因此将执行return
语句之一。
关于c++ - std::merge如何在C++中工作?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29188345/