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

            牽著老婆滿街逛

            嚴(yán)以律己,寬以待人. 三思而后行.
            GMail/GTalk: yanglinbo#google.com;
            MSN/Email: tx7do#yahoo.com.cn;
            QQ: 3 0 3 3 9 6 9 2 0 .

            從非GP到GP

            第一個(gè)代碼是沒有STL時(shí)候的代碼:
            //?name:example2_1.cpp
            //?alias:Rubish

            #include?
            <stdlib.h>
            #include?
            <iostream.h>

            int?compare(const?void?*arg1,?const?void?*arg2);

            void?main(void)
            {
            ????
            const?int?max_size?=?10;????????//?數(shù)組允許元素的最大個(gè)數(shù)
            ????int?num[max_size];????????????//?整型數(shù)組

            ????
            //?從標(biāo)準(zhǔn)輸入設(shè)備讀入整數(shù),同時(shí)累計(jì)輸入個(gè)數(shù),
            ????
            //?直到輸入的是非整型數(shù)據(jù)為止
            ????int?n;
            ????
            for?(n?=?0;?cin?>>?num[n];?n?++);

            ????
            //?C標(biāo)準(zhǔn)庫(kù)中的快速排序(quick-sort)函數(shù)
            ????qsort(num,?n,?sizeof(int),?compare);

            ????
            //?將排序結(jié)果輸出到標(biāo)準(zhǔn)輸出設(shè)備
            ????for?(int?i?=?0;?i?<?n;?i?++)
            ????????cout?
            <<?num[i]?<<?"\n";
            }


            //?比較兩個(gè)數(shù)的大小,
            //?如果*(int?*)arg1比*(int?*)arg2小,則返回-1
            //?如果*(int?*)arg1比*(int?*)arg2大,則返回1
            //?如果*(int?*)arg1等于*(int?*)arg2,則返回0
            int?compare(const?void?*arg1,?const?void?*arg2)
            {
            ????
            return????(*(int?*)arg1?<?*(int?*)arg2)???-1?:
            ????????????(
            *(int?*)arg1?>?*(int?*)arg2)???1?:?0;
            }


            如果要考慮到健壯性,可以有以下方案:
            • 采用大容量的靜態(tài)數(shù)組分配。
            • 限定輸入的數(shù)據(jù)個(gè)數(shù)。
            • 采用動(dòng)態(tài)內(nèi)存分配。

            第一種方案比較簡(jiǎn)單,你所做的只是將max_size改大一點(diǎn),比如:1000或者10000。但是,嚴(yán)格講這并不能最終解決問題,隱患仍然存在。假如有人足夠耐心,還是可以使你的這個(gè)經(jīng)過糾正后的程序崩潰的。此外,分配一個(gè)大數(shù)組,通常是在浪費(fèi)空間,因?yàn)榇蠖鄶?shù)情況下,數(shù)組中的一部分空間并沒有被利用。

            再來(lái)看看第二種方案,通過在第一個(gè)for循環(huán)中加入一個(gè)限定條件,可以使問題得到解決。比如:for (int n = 0; cin >> num[n] && n < max_size; n ++); 但是這個(gè)方案同樣不甚理想,盡管不會(huì)使程序崩潰,但失去了靈活性,你無(wú)法輸入更多的數(shù)。

            看來(lái)只有選擇第三種方案了。是的,你可以利用指針,以及動(dòng)態(tài)內(nèi)存分配妥善的解決上述問題,并且使程序具有良好的靈活性。這需要用到new,delete操作符,或者古老的malloc(),realloc()和free()函數(shù)。但是為此,你將犧牲程序的簡(jiǎn)潔性,使程序代碼陡增,代碼的處理邏輯也不再像原先看起來(lái)那么清晰了。一個(gè)compare函數(shù)或許就已經(jīng)令你不耐煩了,更何況要實(shí)現(xiàn)這些復(fù)雜的處理機(jī)制呢?很難保證你不會(huì)在處理這個(gè)問題的時(shí)候出錯(cuò),很多程序的bug往往就是這樣產(chǎn)生的。同時(shí),你還應(yīng)該感謝stdlib.h,它為你提供了qsort函數(shù),否則,你還需要自己實(shí)現(xiàn)排序算法。如果你用的是冒泡法排序,那效率就不會(huì)很理想?!?,問題真是越來(lái)越讓人頭疼了!

            下面再來(lái)看看STL后的代碼:

            //?name:example2_2.cpp
            //?alias:The?first?STL?program

            #include?
            <iostream>
            #include?
            <vector>
            #include?
            <algorithm>

            using?namespace?std;

            void?main(void)
            {
            ????vector
            <int>?num;????????//?STL中的vector容器
            ????int?element;

            ????
            //?從標(biāo)準(zhǔn)輸入設(shè)備讀入整數(shù),?
            ????
            //?直到輸入的是非整型數(shù)據(jù)為止
            ????while?(cin?>>?element)
            ????????num.push_back(element);

            ????
            //?STL中的排序算法
            ????sort(num.begin(),?num.end());

            ????
            //?將排序結(jié)果輸出到標(biāo)準(zhǔn)輸出設(shè)備
            ????for?(int?i?=?0;?i?<?num.size();?i?++)
            ????????cout?
            <<?num[i]?<<?"\n";
            }

            posted on 2006-04-24 09:39 楊粼波 閱讀(424) 評(píng)論(0)  編輯 收藏 引用 所屬分類: 學(xué)習(xí)筆記

            久久无码专区国产精品发布| 久久精品国产只有精品66| 人妻无码αv中文字幕久久琪琪布 人妻无码精品久久亚瑟影视 | 亚洲欧美久久久久9999| 伊人久久亚洲综合影院| 亚洲∧v久久久无码精品| 国产精品99久久99久久久| 99久久夜色精品国产网站| 亚洲国产精品狼友中文久久久| 奇米影视7777久久精品| 久久久久综合网久久| 久久国产劲爆AV内射—百度| 精品久久久久久中文字幕大豆网| 久久精品无码午夜福利理论片| 国产成人综合久久精品尤物| 天天躁日日躁狠狠久久| 国产精品免费久久久久电影网| 影音先锋女人AV鲁色资源网久久 | 人人狠狠综合久久亚洲婷婷| 国产精品一区二区久久精品涩爱| 久久国产精品久久国产精品| 一本久久a久久精品亚洲| 国产精品成人99久久久久| 久久亚洲AV成人无码国产| 亚洲欧美一级久久精品| 中文字幕久久欲求不满| jizzjizz国产精品久久| 国产亚洲精久久久久久无码77777| 国产精品久久久久乳精品爆| www久久久天天com| 国产精品99久久精品| 国产情侣久久久久aⅴ免费| 久久国产免费直播| 久久精品国产亚洲AV蜜臀色欲| 久久综合色区| 亚洲日韩欧美一区久久久久我| 欧美粉嫩小泬久久久久久久| 精品无码久久久久久久久久| 国产精品九九久久免费视频| 久久成人18免费网站| 久久精品无码一区二区三区日韩|