開區間和閉區間,學過這個很多年了吧,估計是在初中時候的數學里。今天特意查了下,終于又知道了“[”是閉的,“(”是開的(詳細請看下面的花色字體)。
查這個好笑否?其實是有緣由的,當然也有些用處,我慢慢道來
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 叫做區間的端點.