问题描述
根据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
的描述为
-
效果: 将范围
middle - first
中的第一个[first,last)
排序元素放入范围[first,middle)
。[middle,last)
范围内的其余元素按未指定的顺序放置。
我认为这里没有任何内容会禁止 middle
等于 last
。