• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            woaidongmao

            文章均收錄自他人博客,但不喜標題前加-[轉貼],因其丑陋,見諒!~
            隨筆 - 1469, 文章 - 0, 評論 - 661, 引用 - 0
            數據加載中……

            開區間與閉區間——從初等數學中吸取一點編程養分

            開區間和閉區間學過這個很多年了吧,估計是在初中時候的數學里。今天特意查了下,終于又知道了“[”是閉的,“”是開的(詳細請看下面的花色字體)。

            查這個好笑否?其實是有緣由的,當然也有些用處,我慢慢道來

             

            1.      編程中,總是很頻繁的要實現對數據進行搜索,查找的代碼。以搜索舉例,要給定開關條件,比如寫一個函數,找到login_beginlogin_end之間的帳戶。如果這樣的代碼寫得很多了,就會犯糊涂,這里給的條件login_beginlogin_end,到底有沒有包含login_beginlogin_end啊?不確定,然后翻代碼一看,噢,原來沒有包含呀。不確定包含與否的原因,是因為沒有使用統一的開閉區間規則。

             

            2.      STL的容器和算法的實現,都有一個共性: 迭代器構成的區間是前閉后開的, [vector::begin(), vector::end() ),這樣在使用的時候就不會犯糊涂了;

             

            3.      C++舉例,for(int i= 0; i < 10; ++i)這樣的迭代過程,使用的也是一個前閉后開區間,[010,如果這樣寫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 叫做區間的端點.

            posted on 2008-12-25 17:24 肥仔 閱讀(4584) 評論(4)  編輯 收藏 引用 所屬分類: 編程思想

            評論

            # re: 開區間與閉區間&mdash;&mdash;從初等數學中吸取一點編程養分  回復  更多評論   

            使用前閉后開并非沒有原因,begin + count = end, end - begin = count,多么方便:)
            2008-12-26 12:37 | NeutralEvil

            # re: 開區間與閉區間&mdash;&mdash;從初等數學中吸取一點編程養分  回復  更多評論   

            補充一點,在STL里面,采用半開區間表示范圍,那就可以統一使用這樣的迭代形式:
            for (iter = con.begin(); iter != con.end(); ++iter) ...

            否則的話,random access iterator固然可以用<=來判斷終止,其他類型的iterator就不方便了。
            2008-12-26 12:45 | NeutralEvil

            # re: 開區間與閉區間&mdash;&mdash;從初等數學中吸取一點編程養分  回復  更多評論   

            @NeutralEvil
            第二條補充得太棒了,我沒有想到你補充的那點,汗!
            STL的偉大,正是在抽象之后,形式上的統一,優美啊。
            2008-12-26 21:39 | 肥仔

            # re: 開區間與閉區間&mdash;&mdash;從初等數學中吸取一點編程養分  回復  更多評論   

            這個問題我已經也想過,我覺的從哲學上來思考的話, 應該是一種平衡的思想, 即如果我們把整數從負無窮到正無窮按等長區間來表示的話, 每個區間, {), 這樣每個人都很公平, 或者(]也可以;如果有的區間用[], 或(), 則一定會有區間是()或[],這樣顯的就不一致了.
            2008-12-27 14:32 | vcfly
            天天做夜夜做久久做狠狠| 久久国产三级无码一区二区| 麻豆av久久av盛宴av| 亚洲AV无码一区东京热久久| 91精品久久久久久无码| 香蕉久久夜色精品国产尤物| 69久久夜色精品国产69| 久久国产高清一区二区三区| 日韩精品久久无码中文字幕| 国产成人精品久久亚洲高清不卡 国产成人精品久久亚洲高清不卡 国产成人精品久久亚洲 | 久久精品国产2020| 久久综合九色综合精品| 精品久久久一二三区| 99久久国产综合精品成人影院| 久久久国产打桩机| 品成人欧美大片久久国产欧美| 人妻丰满AV无码久久不卡| 欧美午夜A∨大片久久 | 亚洲综合伊人久久综合| 久久夜色精品国产| 色综合久久88色综合天天| 久久夜色精品国产噜噜亚洲AV | 久久久久免费视频| 国产精品99久久久久久人| 久久久久久精品久久久久| 美女久久久久久| 久久久久亚洲精品无码网址 | 亚洲中文久久精品无码ww16| 久久久久久久久久久免费精品| 91精品国产色综久久| 久久精品国产亚洲沈樵| 国产麻豆精品久久一二三| 婷婷久久久亚洲欧洲日产国码AV| 亚洲精品美女久久久久99小说| 亚洲国产成人久久精品影视| 久久er国产精品免费观看2| 久久精品国产第一区二区三区| 亚洲va久久久噜噜噜久久男同| 亚洲国产精品无码久久一区二区 | 性做久久久久久久| 久久精品aⅴ无码中文字字幕不卡|