我可以看到std::sort
返回void
。但是现在ranges
已经添加到C++20标准中,为什么std::ranges::sort
返回迭代器
?cppreference指定:
返回值
等于last的迭代器。
void
相比,用例的优势是什么?
您不必将结束迭代器传递给std::ranges
中的算法。您可以传递一个哨兵,这是一个类似于迭代器的东西,但它本身不是一个迭代器(它不能被取消引用或增量)。想一想,如果您想要向算法传递一个以NULL结尾的字符串,那么这可能是多么有用。
std::range::sort
排序时必须找到序列的结尾。这是有用的信息,因此返回。