开区间和闭区间,学过这个很多年了吧,估计是在初中时候的数学里。今天特意查了下,终于又知道了“[”是闭的,“(”是开的(详细请看下面的花色字体)。
查这个好笑否?其实是有缘由的,当然也有些用处,我慢慢道来
1. 编程中,总是很频繁的要实现对数据进行搜索,查找的代码。以搜索举例,要给定开关条件,比如写一个函数,找到login_begin到login_end之间的帐户。如果这样的代码写得很多了,就会犯糊涂,这里给的条件login_begin到login_end,到底有没有包含login_begin和login_end啊?不确定,然后翻代码一看,噢,原来没有包含呀。不确定包含与否的原因,是因为没有使用统一的开闭区间规则。
2. STL的容器和算法的实现,都有一个共性: 迭代器构成的区间是前闭后开的, 如[vector::begin(), vector::end() ),这样在使用的时候就不会犯糊涂了;
3. C++举例,for(int i= 0; i < 10; ++i)这样的迭代过程,使用的也是一个前闭后开区间,[0, 10),如果这样写for(int i= 0; i <= 9; ++i),虽然等价,但已不是一个良好的格式了;
4. 最后所说的吸取养分,总结成如下这句话:在业务逻辑上和项目代码里使用统一的开闭区间规则,推荐使用前闭后开“[ )”,为什么?因为所以没原因。
////////////////////////////////////////////////////////////////////////
设 a, b 是两个实数, 且 a ≤ b.
1)满足 a ≤ x ≤ b 的实数 x 的集合,
表示为 [ a, b ], 叫做闭区间;
2)满足 a < x <b 的实数 x 的集合,
表示为 ( a, b ), 叫做开区间;
3)满足 a ≤ x <b, a <x ≤ b 的实数 x 的集合,
分别表示为 [ a, b ), ( a, b ], 叫做半开区间.
这里实数 a, b 叫做区间的端点.