開區(qū)間和閉區(qū)間,學(xué)過這個(gè)很多年了吧,估計(jì)是在初中時(shí)候的數(shù)學(xué)里。今天特意查了下,終于又知道了“[”是閉的,“(”是開的(詳細(xì)請(qǐng)看下面的花色字體)。
查這個(gè)好笑否?其實(shí)是有緣由的,當(dāng)然也有些用處,我慢慢道來
1. 編程中,總是很頻繁的要實(shí)現(xiàn)對(duì)數(shù)據(jù)進(jìn)行搜索,查找的代碼。以搜索舉例,要給定開關(guān)條件,比如寫一個(gè)函數(shù),找到login_begin到login_end之間的帳戶。如果這樣的代碼寫得很多了,就會(huì)犯糊涂,這里給的條件login_begin到login_end,到底有沒有包含login_begin和login_end啊?不確定,然后翻代碼一看,噢,原來沒有包含呀。不確定包含與否的原因,是因?yàn)闆]有使用統(tǒng)一的開閉區(qū)間規(guī)則。
2. STL的容器和算法的實(shí)現(xiàn),都有一個(gè)共性: 迭代器構(gòu)成的區(qū)間是前閉后開的, 如[vector::begin(), vector::end() ),這樣在使用的時(shí)候就不會(huì)犯糊涂了;
3. C++舉例,for(int i= 0; i < 10; ++i)這樣的迭代過程,使用的也是一個(gè)前閉后開區(qū)間,[0, 10),如果這樣寫for(int i= 0; i <= 9; ++i),雖然等價(jià),但已不是一個(gè)良好的格式了;
4. 最后所說的吸取養(yǎng)分,總結(jié)成如下這句話:在業(yè)務(wù)邏輯上和項(xiàng)目代碼里使用統(tǒng)一的開閉區(qū)間規(guī)則,推薦使用前閉后開“[ )”,為什么?因?yàn)樗詻]原因。
////////////////////////////////////////////////////////////////////////
設(shè) a, b 是兩個(gè)實(shí)數(shù), 且 a ≤ b.
1)滿足 a ≤ x ≤ b 的實(shí)數(shù) x 的集合,
表示為 [ a, b ], 叫做閉區(qū)間;
2)滿足 a < x <b 的實(shí)數(shù) x 的集合,
表示為 ( a, b ), 叫做開區(qū)間;
3)滿足 a ≤ x <b, a <x ≤ b 的實(shí)數(shù) x 的集合,
分別表示為 [ a, b ), ( a, b ], 叫做半開區(qū)間.
這里實(shí)數(shù) a, b 叫做區(qū)間的端點(diǎn).