代表间隔或范围?

Omn*_*ous 4 computer-science

通常,无论何时表示任何类型的范围,都可以选择几种值来选择范围的开始和结束。例如,如果要包含整数1、2、3、4、5的范围,则可以选择以下可能的值:

  • 开始= 0,结束= 5(又名开始<x <=结束)
  • 开始= 1,结束= 5(又名开始<= x <=结束)
  • 开始= 0,结束= 6(又名开始<x <结束)
  • begin = 1,end = 6(又名begin <= x <end(C ++ STL和许多其他库似乎都选择了此选项))。

我不确定应该使用哪些措施来选择这些选项之一。

Omn*_*ous 5

我希望有人能给我链接到EW Dijkstra就该主题写的一篇不错的论文。我设法将正确的搜索字词插入Google,并找到了所需的链接。论文是“为什么编号应该从0开始”,并且还介绍了为什么范围应该以半开间隔表示(开始,结束)

基本论点有几部分:

  1. 具有对所有4种不同选择的支持的编程环境(施乐PARC的Mesa编程语言)的直接经验导致人们在[开始,结束]上进行标准化,因为所有其他选择经常出错。
  2. 如果您有一个从0开始的间隔,则将起点设为-1或类似的东西会很尴尬和损坏。这强烈地证明了从开始的时间间隔begin(即所有开始<= x个选择)。
  3. 如果end是过去的一个起点,那么用于确定区间大小,计算下一个相邻区间的开始以及一系列其他类似事情的数学方法就可以很好地解决问题。例如,大小为end - begin。和endbegin下一个相邻的间隔的。在您的计算中出现一次错误的机会就更少了。
    • 与此相关的是,空范围是[begin, begin),非常明显。[begin, begin - 1]如果两面都关闭,那一定会很尴尬。从0开始,这尤其尴尬。