【问题标题】:Can partial_sort's middle iterator equal the end iterator?partial_sort 的中间迭代器可以等于结束迭代器吗?
【发布时间】:2021-02-17 19:45:56
【问题描述】:

根据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 时是否定义了行为?

【问题讨论】:

  • 这里的教训是,其中一个网站往往比另一个更可靠。

标签: c++ sorting undefined-behavior


【解决方案1】:

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

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

标准规定了这样的先决条件:

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

【讨论】:

    【解决方案2】:

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

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

    我在这里看不到任何东西可以阻止 middle 等于 last

    【讨论】:

      猜你喜欢
      • 2018-02-16
      • 2021-09-20
      • 2012-08-16
      • 2010-11-06
      • 2019-04-19
      • 1970-01-01
      • 2011-03-26
      • 2021-08-24
      • 1970-01-01
      相关资源
      最近更新 更多