• <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>

            沐楓小筑(C++)

            愛老婆,要比編程多一點...

              C++博客 :: 首頁 :: 聯系 :: 聚合  :: 管理
              18 Posts :: 0 Stories :: 84 Comments :: 0 Trackbacks

            公告

            沐楓的個人主頁

            eoool.com生成

            eoool.com生成

            常用鏈接

            留言簿(8)

            我參與的團隊

            搜索

            •  

            積分與排名

            • 積分 - 56891
            • 排名 - 402

            最新評論

            閱讀排行榜

            評論排行榜

            共2頁: 1 2 
            腳本的可控程度,復雜度等等,更容易影響語言的選擇.
            “吾嘗終日而思矣,不如須臾之所學也。”
            ——荀子
            form中有幾個屬性可調。
            1 有屬性用于確定form顯示在哪個屏幕上
            2 有屬性用于確定form顯示在哪個坐標上
            3 有屬性用于確定form是居中在哪個屏幕上
            “確實只測試過第一個例子”
            --真的測試過了嗎?怎么測試的?
            for(i = 1;i < N;i ++)sum += i;
            這個N到底加了沒有?
            從版本號也能看出來。asio目前只有0.3.9,還遠未到開發完整。
            因此,成熟自然也遠未到。
            第4種雖然可行,但還是不用為好。以免某些編譯器不支持,同時也增加代碼理解難度,而且在更復雜的情形中,這一招也無法解決問題。
            還是第5種比較合適。
            優化工作完全交給編譯器來做
            --呵呵,這不是我說的,是你說的。我也不完全認同。
            優化的問題太復雜了,不可能討論的出來結果的,因為它與實際情況關系太密切了。

            至于返回引用,的確是我看錯了。不好意思。
            用flashget或迅雷之類的下載工具,可以從微軟站點全速下載的。
            @owlcn
            就好象返回局部變量的指針一樣。這樣,有可能你可以運行,也有可能在某些時候就不能運行。。。
            效率高不高不是你認為不認為的問題。
            而是實際使用環境造成的。

            現在的編譯器已經不是當年的編譯器了。你要是沒有把編譯器的各種優化功能用好,就很難說哪種方法在哪個使用環境下,誰的效率更高。

            就拿VC來說吧。VC除了各種編譯時和鏈接時的優化外,還有一個按配置優化的功能。也就是讓你的程序在運行中收集信息,經過一段長時間的使用以后,將收集的信息,讓編譯器根據這個信息對代碼重新進行優化。這種優化才是真正的根據實際需要優化的。
            博主太恐怖了,居然敢返回string&.
            str.erase(remove_if(str.begin(), str.end(), isspace), str.end());

            喏,還是很容易,一句就搞定了。
            re: 漢語編程++ 沐楓 2007-10-18 19:41
            想不到這個東西這么值錢,各位兄弟,趕緊行動起來,撈錢去嘍
            re: 漢語編程++ 沐楓 2007-10-18 19:40
            漢字激光照排系統 這個名富其實。
            但是其它幾個居然敢跟它排在一起.....
            re: 漢語編程++ 沐楓 2007-10-17 20:40
            說實話,易語言還是有可取的地方,就是集成開發環境將程序流程和注釋做的很醒目很好看。
            re: 從賦值到初始化 沐楓 2007-10-06 23:10
            @空明流轉
            我也用C#的啊?可是怎么不知道c#居然有構造函數多態行為。
            你可能是指從一個構造函數調用另一個構造函數吧。
            C++將會在下一個標準中增加這個功能。
            re: 從for到foreach 沐楓 2007-09-27 22:53
            @missdeer
            好象、可能,這個說的很不地道。
            性能的確會稍差,但差的是常數級別。循環體內是不差的。也就是說,大多數情況下可以忽略。
            @夢在天涯
            有更多的參數支持。但默認只支持10個以內。
            需要更多的參數,要修改源代碼中的一個宏定義。我以前曾看過,代碼中有50個以內的參數定義預留。
            re: 從for到foreach 沐楓 2007-09-27 16:12
            @danielwyo
            姓林的重名的實在是沒有辦法避免,我周圍常能找到重名的。更何況拼音。
            ---
            上面的例子實在是簡單,因此,還不覺得那個iterator循環難看到哪去。一旦復雜度提高了,再那么寫就很不順眼了。
            既使用foreach,也頂多改善一些罷了。

            倒是對于.net引入的LINQ語法,很是向往。SQL當初面世的時候,曾被推寵,但直到今天也僅用于數據庫。真正開始在一般的程序設計上普及,看來看去也只有LINQ了。

            象上面的例子,用C#3.0寫就是:
            m_vecData
              .
            Where(item => !item.IsBusy())
              .
            All(item => item.DoSomeThing(param));
            LINQ則:
            var s = from item in m_vecData
                    
            where !item.IsBusy()
                    
            select item;
            s.
            All(item => item.DoSomeThing(param));

            如果是用Ruby:
            m_vecData.each {|item| !item.IsBusy() and item.DoSomeThing(param)}
            re: 從for到foreach 沐楓 2007-09-27 15:13
            并非完全要期待C++0x,那玩意兒至少要2年呢。

            主要是為了希望能提高c++代碼的可讀性。
            10多年前,剛學習C++的時候,為其傾倒,首要的,也是它在語言級上支持類,使得數據與算法的封裝變得直觀。
            后來又加上函數重載和操作符重載,使得表達式變得簡單清晰。
            再后來,模板的出現,使得消除重復代碼的同時還可以得到類型安全的保證。
            這一切都是喜歡C++的理由。

            然后,最終發現,這一切也變成容易寫出壞味道甚至難以維護的代碼的禍首。C++語法太過于低級,沒有更高一級的抽象,造成了對很多人最終難學難用難看的印象和后果。

            既然無法從語法級別上進行改進,那就只好從程序庫中補充。因此,象BOOST等一系列的庫,都在這上面花了不少力氣。有許多人說這些庫用的“技巧"旁門左道,因此而抵制。事實上,它們只是為了能夠讓別的人不需要用很深刻的技巧,而打造了一批讓我們可以很順手使用的程序庫。

            foreach 如此,format和assign如此,lambda,functional,bind,xpressive 等等,無不如此。

            正是這些庫能簡化并提高程序設計的效率和可讀性,才有了C++0x的提案和實踐,也才有了C++語言的進化。
            re: STL問題系列一 沐楓 2007-09-14 17:20
            關于 < 的比較
            你有沒有注意到,大多數的STL算法,都只需要傳進去一個比較函數就可以了?
            默認情況下,傳進去的就是 < 比較.
            那么,如果你要比較 a == b 怎么辦?
            只有 !(a<b) && !(b<a)了.
            所以,并非是說 ==的作用要小于<,而是條件所限.既然一個比較就可以了,總不能讓你提供一大堆的比較函數吧?
            re: STL問題系列一 沐楓 2007-09-13 22:53
            1、《C++STL 中文版》第一章課后習題:1-4、解釋為什么在所寫算法中使用其他種類的迭代器,而不是隨機存取迭代器?1-5、解釋為什么寧愿定義一個僅能通過迭代器來存取的數據結構,而不是讓他可以被隨機存取呢?
            >>
            1-4,并不是說不能使用隨機存取迭代器.比如sort就是使用隨機迭代器.設計一個算法,要選擇哪種迭代器,是要看具體什么算法.如果前向能滿足,就選前向,否則才考慮雙向,最后再考慮隨機.
            1-5,問題與1-4是一致的.這里也不是寧愿不寧愿的問題.不同的數據結構有不同的目的.沒有特別的要求.這兩個題稍有誤導.主要是STL中的算法基本上都是通過迭代器存取.因此,符合迭代器的結構,就可以直接使用上這些算法.接口也統一,設計也清楚.

            2、《C++STL 中文版》迭代器部分一直介紹輸入、輸去、前向、雙向、隨機迭代器,然而我以為只要以<iterator>建立的對象就具有隨機迭代器的功能,為何討論前向、雙向呢?
            >>
            迭代器是一種存取容器數據結構的方式.并不是所有的容器都可以直接支持隨機訪問的,或者說,用隨機訪問效率非常低下.比如鏈表.(雙向鏈表和單向鏈表等)

            3、從《C++STL 中文版》第一章后面的習題看前向、雙向、隨機迭代器從性質和條件上有較大差別,請問這在深層上如何理解呢?
            >>
            顯然,前向指只能向從前向后依順序訪問(如單向鏈表)
            .雙向指可以向前,也可以向后依順序訪問(如雙向鏈表)
            .隨機,則是可以隨機訪問容器中的任何一個元素(如數組).

            4、《C++STL 中文版》第二章習題:2-3“當T和U中有一個是const類型時,我們可能需要經常構造一個pair<T,U>對象。下面的定義是否可以達到這樣的效果?如果不可以,請說出你的理由。
            template<class T,class U>inline pair<T,U> make_pair(T& x,U& y)
            {return (pair<T,U> (x,y));}”
            >>
            這個
            這樣的效果是什么效果?是指能不能構造成功?當然可以構造成功啦.例如:int a=2,b=4;pair<const int, int> c(make_pair(a,b));


            5、《C++STL 中文版》2-4“請描述出一種可能的編碼情況,使得表達式 x.first < y.first ||
            !(y.first < x.first) && x.second < y.second 并不等同于 x.first < y.first || x.first == y.first && x.second < y.second。”
            >>
            沒看過這本書.不明白要求什么寫哪部份的編碼.單從表達式來說.
            隨便寫一個不符合要求的operator == 就好了(比如operator==返回<的結果).

            6、STL在他的文件中定義了指針和引用,但同時還總是定義常指針和常引用,為何兩者必須分開實現呢?
            >>
            常指針和指針...這指的是typedef嗎?typedef談不上實現不實現的吧.只不過是一個typedef而已啦.C++的typedef并不是一個真正的類型,只是類型的別稱而已.

            7、《C++STL 中文版》第四章:4-6“寫出一個分配器,它將對象存儲在一個磁盤文件中,并且維護一個小小的高速緩存來存儲程序內存中的有效對象。”
            >>
            這個...為什么不自已試著寫寫呢.

            8、《C++STL 中文版》第四章:4-7“在那種情況下,分配器應該以與模板類allocator不一致的方式來定義成員函數construct和destroy?”
            >>
            allocator的construct是用placement new來實現的.construct的目的就是用于調用構造函數.在C++中,似乎只有用placement new的方式來手工調用構造函數.不一致的話,是不是指不用調用構造函數,或是有特別的調用方式?想不出來可以不用調用構造函數的實現或別的調用方式.
            或者是不一致的方式另有所指?

            9、<algorithm>文件中sort_heap函數功能:void sort_heap(RanIt first, RanIt last)重排由區間[first,last)中的迭代器指定的序列,產生一個按 operator <排序的序列。但是最初的序列也必須是一個同樣按 operator < 排序的堆。這樣看,那該函數的實際意義呢?
            >>答:
            堆排序.按<排序的堆,并不等于整個序列是按<排好序的.例如:( 9 6 8 4 1 5 7 3 2 0 )就是按<排好序的堆.但按<排好序的序列是(1 2 3 4 5 6 7 8 9)
            re: STL問題系列一 沐楓 2007-09-13 21:48
            這個不要放在首頁吧...
            什么會自已寫分隔函數呢?
            c庫就有一個strtok挺好的。
            re: VC2008 beta2 的幾個新東西 沐楓 2007-08-14 13:15
            呵呵,不用擔心,C++0x已經確定了這個特性,就是>>中間不需要空格。
            新的g++和vc9都已經支持了這個特性了。
            re: File I/O 沐楓 2007-08-14 00:48
            其實,這個功能,VisualStudio的C++編譯器已經提供了。

            /FI[ ]pathname
            此選項使預處理器處理指定的頭文件。此選項的作用與在命令行上、CL 環境變量中或命令文件中指定源文件,并同時在每個源文件的第一行上的 #include 指令中用雙引號指定該頭文件相同。如果使用多個 /FI 選項,將按 CL 處理文件的順序來包含這些文件。

            在 Visual Studio 開發環境中設置此編譯器選項

            打開此項目的“屬性頁”對話框。有關詳細信息,請參見設置 Visual C++ 項目屬性。
            單擊“C/C++”文件夾。
            單擊“高級”屬性頁。
            修改“強制包含”屬性。
            re: 用c++,寫小型病毒 沐楓 2007-08-02 11:47
            joker
            @pass86
            差太多了。
            re: C++高效編程忠告 沐楓 2007-07-20 12:00
            @金慶
            就是必須的,所以才是一種妨礙。

            目前C++有3種編程:c, 類, 模板。
            其中,頭文件對于c來說,并不成問題,甚至還帶來許多便利。
            但是對于類,和模板,特別是模板來說,麻煩就大了。

            對于類來說,封裝性和實現隱藏是一個很重要的概念,但大多數情況下,許多人都不容易做到這一點。.h文件中會有許多私有的數據成員,甚至還有不少的函數實現(如inline函數),從而對封裝性和實現隱藏造成破壞,造成編譯依賴,進一步造成編譯器的復雜度提高。最終為了避開這些問題,將會造成庫設計要求的提高。

            至于模板風格的編程就更不得了,目前幾乎沒有支持分離模板的編譯器。況且即便分離了,又能怎么樣?最終的結果是,大多的模板風格的程序,所有的代碼都在.h文件中,.cpp反而只剩了一句話:#include "xxx.h",沒了。

            re: C++高效編程忠告 沐楓 2007-07-19 19:21
            閑來無聊,無聊一下:

            2 頭文件的作用
            這是由于歷史原因造成的。
            頭文件主要用于存放接口聲明,以便不同的c文件共享函數聲明。
            到了c++中,已經造成一種妨礙了。

            3 * & 的位置
            這個位置放哪,雖然要緊,但更要緊的是,遵守一個變量一行定義。這樣就不會出現錯誤,也很好讀。如:
            int * i;
            int j;

            4 if
            仍然是歷史原因造成的。c標準中沒有真正的bool類型(c++98和c99加了),而是用int來代替,這就造成了麻煩。所以新寫的程序要避免使用BOOL,而用bool來替代。
            如果是舊標準的編譯器,仍然要注意BOOL其實是int這個要點。

            5 const #define enum
            這幾個各有用途,有時候也不能互代。使用時,優先順序 enum const #define。看具體要求,不一定非要怎么怎么樣。

            6 參數傳遞
            用指針或用引用,倒不定要要爭個誰好誰壞。
            實際上,用指針還更容易讓人明白傳進去的是指針。而引用則不然。引用的引入,在c++中是為了解決運算符重載的問題。
            不過,不管用哪個,倒是建議優先采用 const T* 或const T&,這種常量指針或常亙引用。這不僅關系程序優化,也關系到代碼的質量。

            8 memcpy
            除非沒有類似的庫函數,否則不要重新寫一個。要知道,絕大多數編譯器會對這些庫函數作特殊優化。這是手工編碼無法做到的。

            11 字串
            建議不要使用strcpy,strcmp類似的函數,應該改為strncpy, strncmp等函數。目前新型的編譯器會認為strxxx函數是非法的(被淘汰的),建議用strnxxx,或者編譯器提供的更安全的版本。

            13 指針的大小
            與編譯器及系統平臺有關。大小從2/4/8/16各種可能性都有.不要認死了。

            14 關于new/delete 與malloc/free
            你用了類似class的關鍵字后,就注定不兼容于c了。因此,用了c++的東西,就不要去用mallco/free,除非特殊情況。
            同理,不使用c++的東西,也決不要去用new /delete.
            否則,你的跨語言或跨平臺的想法就打水漂了。還容易出錯。

            15 const 函數
            const不一定只能引用const成員。它可以使用任何成員,只是默認情況不能改變成員的值而已。如果成員被定義為mutable(c++98),則不限制。

            18 #ifdef
            說的太絕對了。而且沒有任何說明如何做。
            事實上#ifdef能做的事還是挺多的。
            re: 8行撰寫的一個備份工具 沐楓 2007-07-19 18:47
            at + rar 簡單配置一下就可以代替程序了。
            或者是.bat + rar.exe 都行的通,去寫程序,反而不靈活。
            @夢在天涯
            一致性是很重要的。沒了一致性,不但這個庫函數是很難用的,而且也是很容易出錯的。
            re: do...while(0)的妙用 沐楓 2007-07-04 11:07
            比如文件, 數據庫鏈接,網絡連接等等這些都可以設計一個資源維護的guard來保護。
            比如MFC的CFile就有這個功能。
            re: do...while(0)的妙用 沐楓 2007-07-04 10:34
            do{}while(0)
            在于宏定義上的使用是無疑的。我在設計庫的時候,是常用的。

            但是對于第一點,用于消除goto,舉的例子很不恰當。
            而且,代碼中常常有一些循環語句。此時,從內循環是無法用break跳出到外循環,仍然得用goto,這樣,do while(0)就變得多余了。

            用auto_ptr等自動守護(guard)機制是更好的選擇:
            bool Execute()
            {
            // 分配資源
            auto_ptr<int> p = new int;

            // 執行并進行錯誤處理
            if(!func1())
            return false;
            if(!func2())
            return false;
            if(!func3())
            return false;

            //...
            return true;
            }
            夫妻倆人估計要么是同學,要么是同事
            re: FreeType2研究 沐楓 2007-05-22 15:51
            你得到一個“口”,估計是字體文件沒有對應的字符。
            你可以用 simsun.ttf試試。
            re: 發現自己土了[未登錄] 沐楓 2007-05-04 11:36
            博主又錯了。這跟土不土沒有關系。

            1. boost::bind并非無限參數。一般不會超過20個。
            2. 既使沒有boost::bind,std::bindxxx和std::mem_funxxx配合,也能達到同樣的效果。雖然參數不能超過2個。
            3. 即使如此,自已去做一次,也有助于對C++機制的了解。
            4. 如果你有需要什么功能,那么可能已經有現成的實現了。就看你是否有找到。
            re: 命令行界面VS圖形界面 沐楓 2007-04-29 19:24
            各有其應用范圍,不要厚此薄彼。擺正心態,根據實際情況,適當選擇,或同時提供。
            re: 計算Int最大最小值 沐楓 2006-12-25 11:56
            為啥用函數呢...
            const int INT_MAX = ~0;
            這樣不挺好的。
            re: 生成無重復的隨機數 沐楓 2006-12-05 18:23
            你的方法1)因為需要保存隨機數歷史數據,因此仍然是需要空間消耗的。而且空間消耗與方法2)比起來,沒區別。

            --
            至于方法2)的交換方法,VS2005中的std::random_shuffle函數就是這么做的。

            re: FreeType2研究 沐楓 2006-11-11 12:08
            漢字碼是Unicode。用相應漢字的Unicode編碼,就可以取到了。
            27cm,對半后是13.5cm.
            1. 這樣,離最近末端最大距離是11cm,因此,最小時間是11秒。
            2. 離最遠的末端最大的距離是27-3=24cm,因此,最大時間是24秒。

            對不對,請指教?
            呵呵,確實是智力題啊。
            最小時間很快就出來了。
            最大時間,剛一開始給矇了。然后看到提示,就霍然開朗了。
            然后果然心算就出答案了。
            --
            問題是心算出答案的題目,如果用程序實現,那不變成了直接輸出答案了,這如何寫算法呢?太簡單的算法,不如不寫。寫復雜了,就不是最優算法了。
            re: FreeType2研究 沐楓 2006-11-08 23:48
            以前有用過ft2,但是發現,在簡體中文windowsxp下面,顯示繁體中文時,顯示位置會不對。
            operator=存在一個異常安全問題。
            假設,執行到new char[]時,發生異常,這時,原有的內容已經被delete掉了。這時,operator=扔出異常,同時,原有的對象已經不能用了。
            re: Return of Turbos 沐楓 2006-09-08 08:54
            我裝好了。試用了一下。
            感覺上,就是bds2006的sp.

            IDE仍然還是bds2006的那一套(bds4.0),只不過,bds2006帶的C++Builder是preview,這回是正式版。

            并沒有值得紀念的新特性在內。
            不過,如果品質有提升,那也是挺不錯的了。畢竟現在也還是2006年啊。
            內置式new,不是一個好的(甚至是不正確的)譯法。
            曾有人提過:就地創建。但有人不喜歡“就地”兩字。
            所以,不喜歡的話,如沒有適當的譯法,還是用placement new這樣的原文比較好。
            operator = 不是異常安全的。
            string不需要operator()操作。

            String str1 = str;//調用拷貝構造函數
            這個聽說是C++標準規定的。
            這個東西,網絡上已經存在多時了。
            有遞推這種算法形式嗎?還是說,只是為了與遞歸對應,不是遞歸就是遞推?
            文中的解釋,覺得是從算法上來說明。其實,遞歸,應該是一種計算機的算法表達形式,它指的應該是有限制的直接或間接重復調用自身的一種子程序。
            共2頁: 1 2 
            久久天天躁狠狠躁夜夜不卡| 国产精品成人99久久久久| 国产香蕉久久精品综合网| 亚洲综合熟女久久久30p| 亚洲精品tv久久久久久久久| 九九精品99久久久香蕉| 久久精品成人一区二区三区| 久久久久亚洲AV无码观看| 久久久九九有精品国产| 久久只有这里有精品4| 久久亚洲欧美日本精品| 婷婷国产天堂久久综合五月| 欧美精品一区二区精品久久| 三级三级久久三级久久| 久久精品国产WWW456C0M| 久久亚洲精品成人AV| 日韩va亚洲va欧美va久久| 99久久99久久精品国产| 日本欧美久久久久免费播放网| 久久综合色之久久综合| 99久久www免费人成精品| 99久久精品国产高清一区二区| 天堂无码久久综合东京热| 欧美亚洲国产精品久久蜜芽| 久久WWW免费人成一看片| 久久久久人妻精品一区三寸蜜桃| 欧美熟妇另类久久久久久不卡| 久久久无码精品午夜| 18岁日韩内射颜射午夜久久成人| 久久久久久久亚洲Av无码| 亚洲va久久久噜噜噜久久天堂| 思思久久精品在热线热| 天天影视色香欲综合久久| 色综合久久88色综合天天 | 精品人妻伦一二三区久久| 久久精品成人| 亚洲精品tv久久久久久久久久| 久久久久亚洲AV无码专区桃色| 激情综合色综合久久综合| 久久久WWW免费人成精品| 久久性精品|