partial_sort 的中间迭代器可以等于结束迭代器吗?

问题描述

根据http://www.cplusplus.com/reference/algorithm/partial_sort/middle 参数是:

指向范围内元素的随机访问迭代器 [first,last) 用作元素的上边界 已完全排序。

具体来说,middle 不允许等于 last。但是,https://en.cppreference.com/w/cpp/algorithm/partial_sort 似乎有完全不同的文档并且没有提到任何范围限制(但显然 middle 不应该在 [first,last] 之外)。

行为是否在 middle == last 时定义?

解决方法

partial_sort 的中间迭代器可以等于结束迭代器吗?

是的,可以。在这种情况下,效果与使用 std::sort 相同。

标准规定了这样的前提条件:

前提条件:[first,middle) 和 [middle,last) 是有效范围。

,

标准(N4659,28.7.1.3/2)中对std::partial_sort的描述为

  1. 效果: 将范围 middle - first 中的第一个 [first,last) 排序元素放入范围 [first,middle)[middle,last) 范围内的其余元素按未指定的顺序放置。

我认为这里没有任何内容会禁止 middle 等于 last