c++ - 为什么 range::sort 返回迭代器?

标签 c++ iterator std c++20 range-v3

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

Return value

An iterator equal to last.


  • 这种选择背后的理性是什么?
  • void 相比,用例优势是什么? ?
  • 最佳答案

    您不必将结束迭代器传递给 std::ranges 中的算法.您可以改为传递一个哨兵,它类似于迭代器,但它本身不是迭代器(它不能被取消引用或递增)。想一想如果您想将空终止字符串传递给算法,这可能会有什么用处。std::ranges::sort在进行排序时一定要找到序列的结尾。这是有用的信息,所以它被返回。

    关于c++ - 为什么 range::sort 返回迭代器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67127770/

    相关文章:

    c++ - 2D “game”开发:游戏逻辑和绘图的坐标

    c++ - 为什么 C++ 类型默认不是 const ?

    c++ - std::ostream::operator<< 没有为 std::string 定义?

    c++ - std::ofstream 打开文件并在特定偏移量中替换

    c++ - 只在运行时知道数据类型。如何向使用它们的其他类隐藏数据详细信息

    c++ - 同时重写和重载 C++ 类中的方法

    c# - 在没有数据重复的情况下转换/实例化/转换为子类/父类(super class)

    C++ - 迭代从 find_if 返回的 std::vector<>

    python - 如何在整个迭代中应用函数?

    c++ - 如何为 STL 类容器提供公共(public) const 迭代器和私有(private)非 const 迭代器?