通常,无论何时表示任何类型的范围,您都可以选择多种类型的值来选择范围的开头和结尾。例如,如果您想要一个包含整数1,2,3,4,5的范围,您可以选择以下可能的值:
我不确定应该使用哪些措施来选择其中一个选项。
答案 0 :(得分:3)
我希望有人能给我一个E.W. Dijkstra在这个主题上写的好文章的链接。我设法将正确的搜索字词插入Google,找到了我想要的链接。论文是"Why numbering should start at 0" and also covers why ranges should be represented with a half open interval [begin, end)。
基本论点有几个部分:
begin
开始的间隔(即所有开始< = x选择)。end - begin
。 end
是下一个相邻区间的begin
。计算中出现一个错误的可能性较小。
[begin, begin)
,非常明显。如果双方都关闭,那就必须是相当尴尬的[begin, begin - 1]
。你的范围从0开始尤其尴尬。答案 1 :(得分:1)
我个人会选择
选项我喜欢让我的结构尽可能清晰,类似于人类的推理。如果你告诉某人“1到5之间的数字”,那么1和5都应该在集合中。
当然,如果有充分的技术理由使用别的东西为什么不能,但如果没有,我会选择乍一看更容易理解的选项。
答案 2 :(得分:1)
我会说这取决于你试图表达的间隔的(暗示或显式)类型。对于浮点数和有理数,我认为我更喜欢半开区间(因此,基本上是min <= value < max
或min < value <= max
)。对于积分值,开放,闭合和半开放区间之间的转换是微不足道的,所以我可能也会在那里使用半开区间。
答案 3 :(得分:0)
有趣的问题。我想建议,因为foreach loop现在非常普遍,选择的内容变得不那么重要了。您可以在不知道底层实现使用哪个范围约定的情况下循环访问集合。