下面是直接从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/

最佳答案

在每次迭代中,first1first2都会增加,因此在某个时刻它们之一将分别等于last1last2(只要正确指定了参数),因此将执行return语句之一。

关于c++ - std::merge如何在C++中工作?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29188345/

10-11 06:50