提问者:小点点

为什么ranges::sort返回迭代器?


我可以看到std::sort返回void。但是现在ranges已经添加到C++20标准中,为什么std::ranges::sort返回迭代器?cppreference指定:

返回值

等于last的迭代器。

  1. 这个选择背后的理性是什么?
  2. void相比,用例的优势是什么?

共1个答案

匿名用户

您不必将结束迭代器传递给std::ranges中的算法。您可以传递一个哨兵,这是一个类似于迭代器的东西,但它本身不是一个迭代器(它不能被取消引用或增量)。想一想,如果您想要向算法传递一个以NULL结尾的字符串,那么这可能是多么有用。

std::range::sort排序时必须找到序列的结尾。这是有用的信息,因此返回。