栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

是否总是假定索引范围的上限是互斥的?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

是否总是假定索引范围的上限是互斥的?

归功于FredOverflow在他的评论中说,这被称为“半开区间”。因此,大概可以将Java集合描述为“ 基于0的半开放范围 ”。

我已经在其他地方整理了一些关于半开和封闭范围的讨论:


Siliconbrain.com-
使用半开范围的16个充分理由
(为简洁起见进行了编辑):

  • 范围内的元素数目
    [n, m)
    只是
    m-n
    (和不
    m-n+1
    )。
  • 空范围是
    [n, n)
    (而不是
    [n, n-1]
    ,如果
    n
    迭代器已经指向列表的第一个元素,或者if ,则可能是一个问题
    n == 0
    )。
  • 对于浮点数,您可以编写
    [13, 42)
    (而不是
    [13, 41.999999999999]
    )。
  • 当处理范围时,
    +1
    -1
    几乎从未使用过。如果它们很昂贵(如日期),则这是一个优势。
  • 如果您在范围内编写查找,则可以通过将末尾作为查找位置返回来轻松表明未找到任何事实:未找到
    if( find( [begin, end) ) ==end)
    任何内容。
  • 在以0开头的数组下标的语言(例如C,C ++,JAVA,NCL)中,上限等于大小。

半开与封闭范围

半开范围的优势:

  • 空范围有效:
    [0 .. 0]
  • 子范围很容易转到原始内容的末尾:
    [x .. $]
  • 易于分割范围:
    [0 .. x]
    [x .. $]

近距离射程的优势:

  • 对称。
  • 可以说更容易阅读。
  • ['a' ... 'z']``+ 1
    之后不需要尴尬
    'z'
  • [0 ... uint.max]
    是可能的。

最后一点很有趣。

numberIsInRange(int n, int min, intmax)
如果
Integer.MAX_VALUE
可以合法地在范围内,则写一个半开范围的谓词确实很尴尬。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/507901.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号