【发布时间】:2018-09-15 16:05:02
【问题描述】:
也许他们想帮助我们,考虑到数组从 0 开始。所以我们可能会认为,如果我们想对前 n 个元素进行排序,我们会一直到 v[n],但实际上我们只去 v [n-1]。所以这可以解释函数排序到最后 - 1 的事实。但在这种情况下,为什么它不从第一个开始 - 1?在乞求时,我们输入 1 并从 v[1] 开始,然后我们输入 n 并在 v[n-1] 处停止。为什么?如果它确实从一个考虑数组,它应该包括最后一个元素。这些只是我的——可能是愚蠢的——想法?这就是为什么我会欣赏一个真实的解释。谢谢!
编辑:非常感谢大家的回答。我可以看到有很多优点,在这个范围内一切看起来都比较正常。我会尽量记住你所有的例子,以便在我的脑海中清楚地表达出来。
【问题讨论】:
-
为什么不从零开始呢?如果你不使用它,你会丢失一个索引值。
-
在 C++ 中自始至终都使用包含下限和互斥上限,那么为什么要为
sort例外? -
这不仅仅是排序,结束后的原则几乎会在任何地方跟随你......结束后有一个优势:你总是通过 start + size 获得范围的结束而无需减去一个 - 或者,反过来,你得到最后的大小 - 开始而不必添加一个。
-
如果我没记错的话,这种模式允许内部循环通过只检查等于而不是小于或等于限制来提高效率。
-
如果范围包含在内,你将如何表示一个空范围?