• <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>
            隨筆-90  評(píng)論-947  文章-0  trackbacks-0

            陸陸續(xù)續(xù)搞了一個(gè)多月了,不過(guò)其實(shí)也就一開(kāi)始的幾天和最近幾天在好好搞。

            前兩天把 Set、Map 寫(xiě)完的時(shí)候,突然發(fā)現(xiàn)我還是完全沒(méi)有理解 STL 的迭代器所玩的花樣。其中的類型萃取我看出來(lái)了,其余的都沒(méi)有。我這里的迭代器是很土的,每個(gè)容器自顧自的(盡管很“巧合”有幾個(gè)一樣的接口)。

            String 類我還想繼續(xù)拓展功能。不過(guò)沒(méi)想好的就是要不要有 Format 功能:如果沒(méi)有,使用上或許偶爾會(huì)有一點(diǎn)點(diǎn)不方便(如果也不提供數(shù)值和字符串相互轉(zhuǎn)換的函數(shù)的話);如果有,基本上不會(huì)去手工解釋 %d、%s 之類的了,那么勢(shì)必要用到 sprintf 之類的東西了,那么我的零依賴的設(shè)想就落空了。

            MultiSet 和 MultiMap 有點(diǎn)兒傾向于不提供了,真有需求的到時(shí)候去 Set<List<T>>、Map<List<T>> 好了。

            文件在此,點(diǎn)擊下載(還沒(méi)測(cè)試仔細(xì),可能有不少 Bug,甚至可能某些函數(shù)有語(yǔ)法錯(cuò)誤沒(méi)測(cè)到,這點(diǎn)請(qǐng)諒解)

             

            請(qǐng)各位給點(diǎn)意見(jiàn)~

            posted on 2009-11-09 22:01 溪流 閱讀(2166) 評(píng)論(32)  編輯 收藏 引用 所屬分類: C++

            評(píng)論:
            # re: XL Library Preview,誠(chéng)征指點(diǎn) 2009-11-09 22:57 | CornerZhang
            既然是在寫(xiě)自己的容器類和String,又何必考慮stl樣的接口。
            是個(gè)DynamicArray時(shí)像個(gè)DynamicArray的樣子
            是個(gè)StaticArray時(shí)像個(gè)StaticArray的樣子
            是個(gè)Stack時(shí)像個(gè)Stack的樣子
            是個(gè)KDTree時(shí)像個(gè)KDTree的樣子
            是個(gè)HashTable時(shí)像個(gè)HashTable的樣子
            何必要考慮,stl中的那種iterator, begin, end之類,畢竟每個(gè)容器的使用方式不一樣,當(dāng)然接口定義的需求就不一樣

            至于String的格式化輸出,是用語(yǔ)言本有的多參數(shù),自己實(shí)現(xiàn)一個(gè)printf就行了!  回復(fù)  更多評(píng)論
              
            # re: XL Library Preview,誠(chéng)征指點(diǎn) 2009-11-09 23:22 | expter
            這種練手 很不錯(cuò),,支持  回復(fù)  更多評(píng)論
              
            # re: XL Library Preview,誠(chéng)征指點(diǎn) 2009-11-09 23:41 | lo
            不想printf 直接抄ctr庫(kù)里的代碼就行了  回復(fù)  更多評(píng)論
              
            # re: XL Library Preview,誠(chéng)征指點(diǎn) 2009-11-09 23:43 | OwnWaterloo
            1.
            "盡管很“巧合”有幾個(gè)一樣的接口"
            stl組件之間的通信就是通過(guò)這種"巧合"。


            2.
            為什么要零依賴? 這個(gè)需求很怪……

            想練習(xí)發(fā)明輪子的心情可以理解……
            再給你提供一個(gè)練習(xí)而又不是重復(fù)發(fā)明的東西吧:
            將printf和scanf的解析過(guò)程抽象出來(lái)。
            這樣,string就只是管理內(nèi)存就可以了。
            format交給別的地方去做。
            相互之間保持正交。

            這樣,format的src和dst可以是FILE*,socket, 以及任何可擴(kuò)展長(zhǎng)度的順序結(jié)構(gòu),比如各種string,std::vector,std::deque,std::list。
            不要將format的功能"埋葬"到你那個(gè)string中,太可惜了。將它剝離出來(lái)。


            還有stl中的反向迭代器其實(shí)是有單獨(dú)一個(gè)模板的,在<iterator>中,通常不需要自己手工編寫(xiě)。
            你可以重復(fù)發(fā)明它一次,然后應(yīng)用于你的各種容器之上,而不是重復(fù)發(fā)明多次。



            3.
            至少std::multiset<T>和 std::set<std::list<T> > 或 std::set<std::vector<T> > 語(yǔ)意都是不同的。

              回復(fù)  更多評(píng)論
              
            # re: XL Library Preview,誠(chéng)征指點(diǎn) 2009-11-09 23:57 | OwnWaterloo
            再給你說(shuō)個(gè)玄乎一些,不那么實(shí)際的理論吧……

            一種設(shè)計(jì)傾向是"添加直到無(wú)法添加"。
            一種設(shè)計(jì)傾向是"減少直到無(wú)法減少"。

            我傾向于后者。也相信你寫(xiě)過(guò)一些代碼之后會(huì)對(duì)前者感到反感。

              回復(fù)  更多評(píng)論
              
            # re: XL Library Preview,誠(chéng)征指點(diǎn) 2009-11-10 00:16 | 溪流
            @CornerZhang

            是。追溯到很久以前,其實(shí)我發(fā)明輪子的最初動(dòng)力是 STL 里的 string 太難用。我就是想提供不一樣的使用方式。也排斥迭代器。最早寫(xiě)的是一個(gè)類 vector 的東西,就不提供迭代器,照樣可以用得很爽。到要寫(xiě) List 的時(shí)候,就不行了,如果要不暴露結(jié)點(diǎn),那么必須有類似迭代器的一套東西了。于是回過(guò)頭來(lái)想想 STL 的這套方式,覺(jué)得倒真不錯(cuò)。所以又反過(guò)來(lái)學(xué)著它了。  回復(fù)  更多評(píng)論
              
            # re: XL Library Preview,誠(chéng)征指點(diǎn) 2009-11-10 00:17 | 溪流
            @expter

            謝謝支持!  回復(fù)  更多評(píng)論
              
            # re: XL Library Preview,誠(chéng)征指點(diǎn) 2009-11-10 00:18 | 溪流
            @lo

            呵呵,雖然其實(shí)一樣,不過(guò)也算個(gè)手段~  回復(fù)  更多評(píng)論
              
            # re: XL Library Preview,誠(chéng)征指點(diǎn) 2009-11-10 00:31 | 溪流
            @OwnWaterloo
            1、這種巧合就是你先前說(shuō)的GP中的“契約”吧。我心里就是有道坎跨不過(guò)去,覺(jué)得沒(méi)法在語(yǔ)法層面顯式呈現(xiàn)這個(gè)契約,,,唉

            2、關(guān)于零依賴
            我知道很多東西不可能做到零依賴,或者做到零依賴代價(jià)很大。
            只是我的設(shè)想是,在一套東西里,有一個(gè)基礎(chǔ)部分,它只和語(yǔ)言特性有關(guān)、只有邏輯意義,這一部分要保持零依賴。其它實(shí)現(xiàn)各種實(shí)際功能的東西,可以有選擇的去依賴別的。如果把 Format 看成 String 的一種擴(kuò)展功能,我本身在寫(xiě) String,為了實(shí)現(xiàn) String 的一個(gè)功能,去使用了現(xiàn)有庫(kù)的這種功能,那我不過(guò)在做包裝而已,而不是寫(xiě)東西了。

            也許 Format 也算不上純屬 String 的功能,你后面給我的啟示看上去很有意義……

            3、
            multimap 確實(shí)不是這個(gè)語(yǔ)義,可能可以勉強(qiáng)湊合吧。只是我想不到非用 multimap 的場(chǎng)合……

            我原本想搞個(gè)
            template <typename IFirst, typename ISecond>
            class ComplexIterator

            想先 ISecond ++ 上去,到 End() 了 IFirst++,ISecond=IFirst->Begin()

            然后直接 typedef ComplexIterator<typename Set<List<T>>::Iterator, typename List<T>::Iterator> MultiSet::Iterator

            后來(lái)發(fā)現(xiàn)需要迭代器自己確定自己是否是 Begin,于是暫時(shí)放棄

            關(guān)于反向迭代器,以及正向的,我一開(kāi)始想各個(gè)容器能否以某種形式提供某一個(gè) ++,-- 的機(jī)制,然后統(tǒng)一實(shí)現(xiàn) Iterator,但是想不好用怎樣的形式……



              回復(fù)  更多評(píng)論
              
            # re: XL Library Preview,誠(chéng)征指點(diǎn) 2009-11-10 00:34 | 溪流
            @OwnWaterloo

            添加到無(wú)法再添加 我并不十分支持。
            但是 減少直到無(wú)法減少,我也不盡贊同。我覺(jué)得 STL 里的東西,就是這種狀況,要什么沒(méi)什么,只能根據(jù)已有的少得可憐的東西去湊出來(lái),換句話說(shuō),要用到日常開(kāi)發(fā)中來(lái),經(jīng)常需要自己再包一層。

            我覺(jué)得還是以方便使用為原則合理添加一些可有可無(wú)的東西比較好。。。

            ——目前的觀點(diǎn),呵呵
              回復(fù)  更多評(píng)論
              
            # re: XL Library Preview,誠(chéng)征指點(diǎn) 2009-11-10 01:06 | OwnWaterloo
            @溪流
            1.
            這是C++的缺陷…… 當(dāng)初可能沒(méi)想到模板會(huì)被這么用,所以模板的功能其實(shí)還比較弱。
            即使比較弱,也比java和C#強(qiáng)大,它是真正的代碼生成器……
            C#的模板有一些約束,java的根本就是垃圾……
            所以,模板還是很復(fù)雜的……

            更本質(zhì)的說(shuō),其實(shí)體現(xiàn)的是一種ducking type,以單一函數(shù)作為組件之間交互的接口,而不是整個(gè)類型。ruby、python、lua這種動(dòng)態(tài)類型語(yǔ)言都支持ducking type。而C++的模板只支持編譯時(shí)的ducking type。
            C++社區(qū)給這種使用方式取了一個(gè)新的名字,叫concepts……

            ducking type可能屬于新東西,而且很可能是意外產(chǎn)物(比如C++、python、lua;ruby好像是設(shè)計(jì)之初就考慮到這種用法),所以沒(méi)有提供專門的、顯示的通過(guò)短小的代碼(比如interface聲明)就可以表達(dá)的方式。只能通過(guò)文檔了……

            說(shuō)穿了,那些抵觸這種設(shè)計(jì)的,要么是偷懶不想看文檔,要么是已經(jīng)學(xué)會(huì)OO就不想學(xué)任何其他新事物,要么就是理解能力不夠……

            心里疙瘩放下吧……
            1.1. 雖然沒(méi)有專門的語(yǔ)法支持,但語(yǔ)言還是會(huì)檢查的,比如C++編譯時(shí)出錯(cuò),其他3個(gè)語(yǔ)言運(yùn)行時(shí)出錯(cuò)。
            1.2. 比如python標(biāo)準(zhǔn)庫(kù)中,序列就沒(méi)有單獨(dú)的size()成員。所有的序列都通過(guò)len得到長(zhǎng)度。已經(jīng)開(kāi)始向這種思想靠攏了。
            1.3. stl也這么多年了……



            2
            我對(duì)0依賴的看法不是"難",而是"通常沒(méi)有必要"。
            應(yīng)該盡可能復(fù)用已有的優(yōu)秀的代碼。
            盡可能向已有的,還過(guò)得去不算垃圾的標(biāo)準(zhǔn)靠攏,而不是自己獨(dú)立發(fā)明一套,結(jié)果在實(shí)際應(yīng)用中無(wú)法融合。

            當(dāng)然,這和練習(xí)編程技巧相抵觸……
            所以我想提出一些建議,既可以練習(xí);并且練習(xí)的結(jié)果是可以真正派上用場(chǎng)的。

            比如,你可以考慮實(shí)現(xiàn)這樣一個(gè)函數(shù):
            int vprintf_parse(void (*handler)(const char* s,void* context),void* context
            const char* format, va_list arg );

            按vprintf的標(biāo)準(zhǔn)去解析format與arg。每處理完一個(gè)%就調(diào)用handler一次。
            由handler去考慮將s"輸出"到哪里。
            這樣的話,vprintf_parse就可以用于很多很多地方:傳遞不同的hanlder給它就行。
            當(dāng)然,你也可以用它來(lái)實(shí)現(xiàn)string.format。 但一定要將vprintf_parse暴露出來(lái),否則窩在string.format中太暴殄天物了。


            更進(jìn)一步…… 還可以提供一些讓客戶代碼擴(kuò)展的機(jī)制,讓它自己定義%后的轉(zhuǎn)義符,以及處理方式。



            3
            我的意思是,這種方式是行不通的。
            你要插入的元素是T吧?
            std::set<std::list<T> > 元素是 std::list<T> 哦, 不是T了。
            比較也是按std::less<std::list<T> >比較,而不是T。

            不管multiset的底層實(shí)現(xiàn)是rbtree還是rbtree+list,都需要真正定義一個(gè)類,將底層實(shí)現(xiàn)的接口adapt一下才行。僅僅typedef是不夠的……

              回復(fù)  更多評(píng)論
              
            # re: XL Library Preview,誠(chéng)征指點(diǎn) 2009-11-10 01:29 | OwnWaterloo
            @溪流
            你就沒(méi)領(lǐng)會(huì)后者的精妙~_~

            后者的精妙之處在于:增加的東西不可能輕易拿掉 —— 否則會(huì)破壞舊有代碼。
            反之,加入原本不存在的東西是很容易的事情……

            如果某個(gè)功能確實(shí)很常用,你可以再得到這種反饋之后將其作為aux添加進(jìn)去。
            反之,如果一開(kāi)始就有某個(gè)設(shè)計(jì)糟糕的功能存在了,你得到反饋之后也很難將其去掉,并且還要一直維護(hù)這個(gè)糟糕設(shè)計(jì)…… 很惡心


            我很欣賞lua的設(shè)計(jì),將lua庫(kù)分為core和aux兩個(gè)層次,而不是混淆在一起。
            加上client,總共就是3個(gè)層次。
            保持core的精簡(jiǎn)對(duì)維護(hù)是非常重要的。
            aux本身實(shí)現(xiàn)就不難,多提供一些對(duì)維護(hù)影響不大。是否提供完全看需求 —— 這是否是很常見(jiàn)的一種使用方式。

            以u(píng)nix的機(jī)制、策略論來(lái)說(shuō):core就僅僅提供機(jī)制,aux將一些常用策略打包,方便client使用。


            設(shè)計(jì)之初就要考慮如何將core精簡(jiǎn)到最小。這對(duì)日后維護(hù)是非常有幫助的。
            一種精簡(jiǎn)的大方向就是僅提供機(jī)制。比如vprintf_parse,就是一種機(jī)制。

            客戶會(huì)如何使用它?就是策略了??蛻艨梢苑浅6嗟姆绞剑╠st不同)使用它。
            可以預(yù)見(jiàn):將string作為dst是一種很常見(jiàn)的使用策略。
            仍然可以先不提供它…… 萬(wàn)一這種估計(jì)錯(cuò)誤了呢-_-
            如果估計(jì)正確,大量代碼的使用者向你抱怨"為什么不提供string.format?",你再提供也來(lái)得及~

            其他的精簡(jiǎn)方式…… 再慢慢總結(jié)吧……

              回復(fù)  更多評(píng)論
              
            # re: XL Library Preview,誠(chéng)征指點(diǎn) 2009-11-10 08:24 | 溪流
            @OwnWaterloo
            這點(diǎn)有點(diǎn)明白了,一開(kāi)始多了,而以后必須向下兼容,于是肩上的包袱就永遠(yuǎn)卸不下來(lái)了,是嗎?  回復(fù)  更多評(píng)論
              
            # re: XL Library Preview,誠(chéng)征指點(diǎn)[未登錄](méi) 2009-11-10 14:45 | foxriver
            "這點(diǎn)有點(diǎn)明白了,一開(kāi)始多了,而以后必須向下兼容,于是肩上的包袱就永遠(yuǎn)卸不下來(lái)了,是嗎?" 支持+贊同KISS原則。

            真正0依賴意義并不大,自己寫(xiě)的程序難免有BUG,要完善勢(shì)必花很多精力,時(shí)間,你真的覺(jué)得自己花上幾年完善一個(gè)LIB是值得的?如果不是研究院,還是按照具體工程來(lái)擴(kuò)展自己的類比較實(shí)在些。

            程序?qū)懚鄬?xiě)大,最大的感受是以前程序一切速度優(yōu)先,有些看起來(lái)雜亂的語(yǔ)法,現(xiàn)在都會(huì)用簡(jiǎn)單慢速明了的語(yǔ)句去表達(dá)。。速度越來(lái)越不是重點(diǎn)了,結(jié)構(gòu)清晰才是程序長(zhǎng)久生命之源。  回復(fù)  更多評(píng)論
              
            # re: XL Library Preview,誠(chéng)征指點(diǎn) 2009-11-11 14:57 | zdhsoft
            建議使用code.google.com上面開(kāi)源
            我的也在寫(xiě),不過(guò)我寫(xiě)的已經(jīng)在我的很多項(xiàng)目中使用了。面對(duì)標(biāo)準(zhǔn)的STL的string,再實(shí)現(xiàn)一個(gè)實(shí)用的string是非常有必要的  回復(fù)  更多評(píng)論
              
            # re: XL Library Preview,誠(chéng)征指點(diǎn) 2009-11-11 20:04 | 溪流
            @zdhsoft

            google那個(gè)規(guī)則怎么樣的?別人可以改我的嗎?  回復(fù)  更多評(píng)論
              
            # re: XL Library Preview,誠(chéng)征指點(diǎn) 2009-11-11 20:35 | OwnWaterloo
            @溪流
            別人只能check out不能commit。除非你授權(quán)?;蛘甙蜒a(bǔ)丁發(fā)給你。
            用git吧,趨勢(shì)……

              回復(fù)  更多評(píng)論
              
            # re: XL Library Preview,誠(chéng)征指點(diǎn) 2009-11-11 22:09 | 夢(mèng)芭莎
            雖然其實(shí)一樣,不過(guò)也算個(gè)手段~  回復(fù)  更多評(píng)論
              
            # re: XL Library Preview,誠(chéng)征指點(diǎn) 2009-11-11 22:39 | 溪流
            @OwnWaterloo

            就是傳說(shuō)中可以打包提交的?
            我以前有一陣子一直在找代碼托管,可惜都開(kāi)源的,google code 只允許有一個(gè)私人項(xiàng)目。。??晌夷挠心敲炊鄸|西能拿出手呀,,于是,只好在自己機(jī)器搭了個(gè)svn。。  回復(fù)  更多評(píng)論
              
            # re: XL Library Preview,誠(chéng)征指點(diǎn) 2009-11-11 22:45 | OwnWaterloo
            @溪流
            一個(gè)google帳號(hào)好像可以建5個(gè)項(xiàng)目。每個(gè)項(xiàng)目好像可以有2g空間。但是只能放和代碼相關(guān)的哦,否則被發(fā)現(xiàn)了google帳號(hào)會(huì)被禁用。

            每個(gè)項(xiàng)目可以傳文件上去,比如打包好的代碼。

            還有一個(gè)repository。原來(lái)只提供svn的,后來(lái)加入了hg。不過(guò)沒(méi)有加git。
            svn的repository就是上面說(shuō)的那樣,擁有者才有commit權(quán)限以及授權(quán)的權(quán)限。
            普通用戶只有check out的權(quán)限。要么只看不改,要么找你要授權(quán),要么給你發(fā)補(bǔ)丁。


            自己機(jī)器上做一個(gè)svn repository的事…… 我也這樣干過(guò)……
            所以很痛恨svn,所以打算用git。

              回復(fù)  更多評(píng)論
              
            # re: XL Library Preview,誠(chéng)征指點(diǎn) 2009-11-13 17:01 | OwnWaterloo
            有個(gè)重要的地方忘記說(shuō)了……
            虛析構(gòu)函數(shù)是不需要的

              回復(fù)  更多評(píng)論
              
            # re: XL Library Preview,誠(chéng)征指點(diǎn) 2009-11-13 21:59 | 溪流
            @OwnWaterloo

            放著讓好事者(也就是將來(lái)某一時(shí)刻的我自己)去繼承...  回復(fù)  更多評(píng)論
              
            # re: XL Library Preview,誠(chéng)征指點(diǎn) 2009-11-13 22:03 | OwnWaterloo
            @溪流
            一個(gè)虛函數(shù)都沒(méi)有,繼承來(lái)做啥?

              回復(fù)  更多評(píng)論
              
            # re: XL Library Preview,誠(chéng)征指點(diǎn) 2009-11-13 23:20 | 溪流
            @OwnWaterloo

            定義一個(gè)相似的類?  回復(fù)  更多評(píng)論
              
            # re: XL Library Preview,誠(chéng)征指點(diǎn) 2009-11-13 23:57 | OwnWaterloo
            @溪流
            何時(shí)需要虛析構(gòu)函數(shù)?當(dāng)通過(guò)父類類指針delete子類時(shí)。
            String這種類型不應(yīng)該作為基類,也不應(yīng)該被多態(tài)使用,所以虛析構(gòu)函數(shù)是不必要的。

              回復(fù)  更多評(píng)論
              
            # re: XL Library Preview,誠(chéng)征指點(diǎn) 2009-11-14 12:32 | 溪流
            @OwnWaterloo

            一般來(lái)說(shuō),虛析構(gòu)函數(shù)用于告訴使用者該類“可繼承”,是嗎?既然這里沒(méi)有什么不可告人的秘密,那么就隨他去好了。(當(dāng)然,如果有人真要繼承,則必須了解里面的運(yùn)作機(jī)制。這是他自己的事。)這樣理解可以嗎?  回復(fù)  更多評(píng)論
              
            # re: XL Library Preview,誠(chéng)征指點(diǎn) 2009-11-14 15:26 | OwnWaterloo
            @溪流
            我再使用上面的觀點(diǎn)狡辯一次吧……

            1. 非虛析構(gòu)
            如果、假設(shè)、萬(wàn)一真的出現(xiàn)了這樣的需求 —— 幾乎不可能 —— 需要被繼承而且以父類指針delete子類。

            還可以這樣:
            class StringDerivable {
            String s_;
            public:
            virtual ~StringDerivable();
            };
            并從StringDerivable繼承。


            2. 虛析構(gòu)
            如果一開(kāi)始就使用虛析構(gòu),無(wú)論是否需要被繼承 —— 幾乎不可能 —— 用戶都必須承擔(dān)一個(gè)虛指針的代價(jià)。


            非虛析構(gòu)對(duì)于不需要繼承的客戶來(lái)說(shuō),沒(méi)有額外的代價(jià)。對(duì)需要繼承的變態(tài)客戶來(lái)說(shuō),也有辦法實(shí)現(xiàn) —— 多一個(gè)步驟。
            這是貫穿整個(gè)C++語(yǔ)言設(shè)計(jì)的一個(gè)重要原則:0代價(jià)原則。
            虛析構(gòu)無(wú)論客戶是否需要,多態(tài)的代價(jià)都必須承受。


            設(shè)計(jì)不單單只是你做了什么,也包括你沒(méi)有做什么。

              回復(fù)  更多評(píng)論
              
            # re: XL Library Preview,誠(chéng)征指點(diǎn) 2009-11-14 19:11 | 溪流
            @OwnWaterloo

            這么說(shuō)來(lái)好像也很有道理...發(fā)現(xiàn)OOP的影子被你砍得一點(diǎn)不剩了,哈哈  回復(fù)  更多評(píng)論
              
            # re: XL Library Preview,誠(chéng)征指點(diǎn) 2009-11-14 19:15 | OwnWaterloo
            @溪流
            哈哈,被你看出來(lái)了……
            我就是一anti-OOP者……

            其實(shí)也不是完全是這樣。只是太多人將OOP當(dāng)作萬(wàn)能藥了。
            以為OOP的設(shè)計(jì),就一定是好的設(shè)計(jì)。OOP成分越多,設(shè)計(jì)越好。
            我反對(duì)的是這種態(tài)度。

              回復(fù)  更多評(píng)論
              
            # re: XL Library Preview,誠(chéng)征指點(diǎn) 2009-11-14 19:18 | 溪流
            @OwnWaterloo

            其實(shí)我個(gè)人基本不怎么會(huì)去繼承,也基本不會(huì)去多態(tài),我喜歡用組合。但是難保別人不會(huì),所以我經(jīng)常隨手丟下虛析構(gòu)函數(shù)
              回復(fù)  更多評(píng)論
              
            # re: XL Library Preview,誠(chéng)征指點(diǎn) 2009-11-14 19:20 | 溪流
            @OwnWaterloo

            那個(gè)反向迭代器,是不是可以把正向迭代器當(dāng)模板參數(shù),在++里讓正向迭代器--,在--里讓正向迭代器的++,正向迭代器的end狀態(tài)當(dāng)成反向迭代器的end狀態(tài)?  回復(fù)  更多評(píng)論
              
            # re: XL Library Preview,誠(chéng)征指點(diǎn) 2009-11-17 20:21 | OwnWaterloo
            @溪流
            某人犯傻去繼承string,那是他的責(zé)任。
            沒(méi)有必要為了避免他的錯(cuò)誤,讓所有人讓步,承受虛指針的開(kāi)銷。

            反向迭代器,我猜的也是這么回時(shí)。
            不過(guò)具體沒(méi)看。
            去看看代碼吧,應(yīng)該不多。
            可能會(huì)有一些細(xì)節(jié),大致想的時(shí)候會(huì)被忽略。

              回復(fù)  更多評(píng)論
              
            99久久免费国产精品热| 久久国产精品偷99| 久久精品国产免费| segui久久国产精品| 亚洲国产成人乱码精品女人久久久不卡| 亚洲欧洲中文日韩久久AV乱码| 香蕉久久夜色精品升级完成| 国产精品久久久久久久| 香蕉久久影院| 久久亚洲国产精品一区二区| 中文精品99久久国产 | 久久中文字幕一区二区| 久久久久亚洲精品无码网址| 久久久久久国产精品免费无码| 国产综合免费精品久久久| 少妇久久久久久久久久| 亚洲а∨天堂久久精品9966| 九九久久99综合一区二区| 亚洲成色www久久网站夜月| 四虎国产精品成人免费久久| 久久er国产精品免费观看2| 国产精品久久久久免费a∨| 麻豆精品久久久一区二区| 久久精品国产亚洲AV无码娇色| 国产精品久久久香蕉| 久久久精品久久久久久| 中文字幕亚洲综合久久2| 九九久久99综合一区二区| 久久综合香蕉国产蜜臀AV| 久久久久久精品免费免费自慰| 热久久国产欧美一区二区精品| 国产精品久久久久久久午夜片| 久久99精品久久只有精品| 久久国语露脸国产精品电影| 亚洲精品乱码久久久久久蜜桃| 久久福利片| 欧美久久久久久午夜精品| 久久久久久无码国产精品中文字幕| 草草久久久无码国产专区| 久久久精品一区二区三区| 99久久人人爽亚洲精品美女|