| ÂÛ̳ע²á| ¼ÓÈëÊÕ²Ø | ÉèΪÊ×Ò³| RSS
Google
Äúµ±Ç°µÄλÖãºÊ×Ò³ > LinuxƵµÀ > Linux¿ª·¢Çø > Èí¼þ¿ª·¢

C++×Ô¶¯»¯(Ä£°åÔª)±à³Ì»ù´¡ÓëÓ¦ÓÃ

ʱ¼ä£º2006-06-16 11:29:29  À´Ô´£ºÖйúITʵÑéÊÒ  ×÷ÕߣºLinuxÁªÃËÊÕ¼¯
¬·¶Î§[1,5)vDTLinuxÁªÃË
        LOOP::execute();vDTLinuxÁªÃË
        //½«Á½¸öÊä³ö·Ö³ÉÁ½ÐÐÊä³övDTLinuxÁªÃË
        std::cout << std::endl;vDTLinuxÁªÃË
        //(1)´Ó2µ½5Ñ­»·Ö´ÐÐFunction£¬·¶Î§[2,5)vDTLinuxÁªÃË
        LOOP::execute();vDTLinuxÁªÃË
        return 0;vDTLinuxÁªÃË
}vDTLinuxÁªÃË
#endif//CODE4vDTLinuxÁªÃË
////////////////////////////////////////////////////////////////////////////////vDTLinuxÁªÃË
//³ÌÐòÔËÐнá¹ûÈçÏÂËùʾ:vDTLinuxÁªÃË
/*********************************************vDTLinuxÁªÃË
1 2 3 4 vDTLinuxÁªÃË
2 3 4 vDTLinuxÁªÃË
************************************************/vDTLinuxÁªÃË
////////////////////////////////////////////////////////////////////////////////vDTLinuxÁªÃË
#if 0vDTLinuxÁªÃË
vDTLinuxÁªÃË
    ´ÓCODE4ÖеĴúÂëÎÒÃdzɹ¦µÄͨ¹ýÌí¼ÓÁËÒ»²ãÍâ·óÀàʵÏÖÁËÑ­»·µÄ³õʼֵÉèÖ㬵«ÊÇÎÒÃÇvDTLinuxÁªÃË
»¹ÊÇÓ¦µ±×¢ÒâCODE4ÖеÄÑ­»·²½³¤²¢²»Äܹ»Ö¸¶¨£¬ËùÒÔÔÚÕâÀïÎÒÃÇͨ¹ýÀàËÆµÄ·½·¨À´ÊµÏÖ²½³¤vDTLinuxÁªÃË
µÄÖ¸¶¨¡£Ïêϸ´úÂë¼ûCODE5Ëùʾ£ºvDTLinuxÁªÃË
vDTLinuxÁªÃË
#endifvDTLinuxÁªÃË
#ifdef CODE5vDTLinuxÁªÃË
#include vDTLinuxÁªÃË
//¼ÓÈëÒ»¸öÍ⸲²ãÀ´´«µÝ¶îÍâµÄÄ£°å²ÎÊývDTLinuxÁªÃË
template class Function,size_t start,size_t finish,size_t step>vDTLinuxÁªÃË
struct LOOPvDTLinuxÁªÃË
{vDTLinuxÁªÃË
        static void execute()vDTLinuxÁªÃË
        {vDTLinuxÁªÃË
                //ΪÁËÄܹ»ÕýÈ·µÄ¼ÆËã³öʵ¼ÊµÄÑ­»·ÖÕÖ¹±äÁ¿£¬ÐèÒª¶Ô¸ø¶¨µÄÖÕÖ¹±äÁ¿vDTLinuxÁªÃË
                //½øÐмÆË㣬ÒÔÂú×ãÕýÈ·µÄÑ­»·ÓïÒåvDTLinuxÁªÃË
                LOOP_BODY<(finish/step*step+start),true>::execute();vDTLinuxÁªÃË
        }vDTLinuxÁªÃË
private:vDTLinuxÁªÃË
        //ÒýÈëÁËÒ»¸ö²¼¶ûÐ͵ÄÄ£°å²ÎÊýÓÃÀ´È·¶¨Ñ­»·µÄÖÕÖ¹Ìõ¼þvDTLinuxÁªÃË
        template struct LOOP_BODYvDTLinuxÁªÃË
        {vDTLinuxÁªÃË
                static void execute()vDTLinuxÁªÃË
                {vDTLinuxÁªÃË
                        LOOP_BODYstart)>::execute();vDTLinuxÁªÃË
                        Function::execute();vDTLinuxÁªÃË
                }vDTLinuxÁªÃË
        };vDTLinuxÁªÃË
        //Ñ­»·µÄÖÕÖ¹Óï¾ä£¬Í£Ö¹µÝ¹éÒÔ½áÊøÑ­»·vDTLinuxÁªÃË
        template struct LOOP_BODYvDTLinuxÁªÃË
        {vDTLinuxÁªÃË
                static void execute(){}vDTLinuxÁªÃË
        };vDTLinuxÁªÃË
};vDTLinuxÁªÃË
//ΪÁËÄ£°å»¯±ØÐ뽫ԭÀ´µÄÊä³öº¯Êý×ö³ÉÒ»¸öÄ£°å½á¹¹ÌåvDTLinuxÁªÃË
template struct FunctionvDTLinuxÁªÃË
{vDTLinuxÁªÃË
        static void execute()vDTLinuxÁªÃË
        {//ÕâÀïµÄnÊDZàÒëÆÚµÄ½á¹û£¬¿ÉÒÔÓÃÀ´¶¨ÒåÊý×éµÄvDTLinuxÁªÃË
                int a[n+1];//Õâô×öÊÇΪÁËÖ¤Ã÷nÊDZàÒëÆÚ³£Á¿vDTLinuxÁªÃË
                std::cout << sizeof(a)/sizeof(int)-1 << " " ;vDTLinuxÁªÃË
        }vDTLinuxÁªÃË
};vDTLinuxÁªÃË
//ÏÂÃæÊDzâÊÔ´úÂëvDTLinuxÁªÃË
int main()vDTLinuxÁªÃË
{vDTLinuxÁªÃË
        //ÏÂÃæµÄÕâÐдúÂë¿ÉÒÔÖ±¹ÛµÄÀí½âΪ£ºvDTLinuxÁªÃË
        //(1)´Ó1µ½10Ñ­»·Ö´ÐÐFunction£¬·¶Î§[1,10)£¬²½³¤2vDTLinuxÁªÃË
        LOOP::execute();vDTLinuxÁªÃË
        //½«Á½¸öÊä³ö·Ö³ÉÁ½ÐÐÊä³övDTLinuxÁªÃË
        std::cout << std::endl;vDTLinuxÁªÃË
        //(1)´Ó2µ½10Ñ­»·Ö´ÐÐFunction£¬·¶Î§[2,10)£¬²½³¤3vDTLinuxÁªÃË
        LOOP::execute();vDTLinuxÁªÃË
        //ÔÝʱ»¹²»ÄÜÔÊÐíÏÂÃæµÄÄæÏòµ÷Ó÷½Ê½vDTLinuxÁªÃË
        //LOOP::execute();vDTLinuxÁªÃË
        return 0;vDTLinuxÁªÃË
}vDTLinuxÁªÃË
#endif//CODE5vDTLinuxÁªÃË
////////////////////////////////////////////////////////////////////////////////vDTLinuxÁªÃË
//³ÌÐòÔËÐнá¹ûÈçÏÂËùʾ:vDTLinuxÁªÃË
/***********************************vDTLinuxÁªÃË
1 3 5 7 9 vDTLinuxÁªÃË
2 5 8 vDTLinuxÁªÃË
**********************************/vDTLinuxÁªÃË
////////////////////////////////////////////////////////////////////////////////vDTLinuxÁªÃË
#if 0vDTLinuxÁªÃË
vDTLinuxÁªÃË
    ´ÓCODE5µÄ´úÂëÖпÉÒÔ¿´³öÃ÷ÏÔ´æÔÚÒ»¸öȱÏÝ£º²¢²»Äܹ»ÊµÏÖÄæÏòµÄÑ­»·²Ù×÷¡£ÕâÔÚÀàvDTLinuxÁªÃË
ÐͲÙ×÷Öв¢²»ÊÇʲôȱÏÝ£¡ÒòΪÔÚºóÐøµÄÕ½ڵĴúÂë²úÉú»úÖÆÖв¢²»Ðè񻀾ÏòµÄÑ­»·²Ù×÷vDTLinuxÁªÃË
£¬ËùÒÔΪÁËʹµÃ±¾Îľ¡Á¿µÄ¼òµ¥£¬ÔÚÕâÀï²¢²»ÌÖÂÛÕâ¸öÎÊÌ⣬Õâ¸öÎÊÌâÁô¸ø¶ÁÕß˼¿¼£¬ÈçvDTLinuxÁªÃË
¹ûÔÚ±¾ÀàÎÄÕµĺóÐøÕ½ÚÖÐÐèÒªÕâ¸ö»úÖÆ£¬ÄÇôÎÒ»áÔÚÐèÒªµÄµØ·½ÊµÏÖÖ®¡£vDTLinuxÁªÃË
vDTLinuxÁªÃË
    ´ÓCODE5µÄÔËÐнá¹ûÀ´¿´£¬CODE5µÄʵÏÖÒѾ­Âú×ãÁËÎÒÃÇÈÕ³£±àÂëµÄÐèÒªÁË£¬Êµ¼ÊÉÏÓÃvDTLinuxÁªÃË
ÕâÀï½éÉܵķ½·¨»¹¿ÉÒԷdz£ÈÝÒ×µÄʵÏÖÐíÐí¶à¶àµÄÑ­»·Óï¾ä£¬°üÀ¨FORÑ­»·£¬WHILEÑ­»·µÈvDTLinuxÁªÃË
µÈ£¬µ«ÊÇÐèҪעÒâµÄÊÇ£º²ÉÓÃÄ£°åÔª±à³ÌÖ÷ÒªÊÇÓÃÀ´ÊµÏÖ×Ô¼ºµÄ¹¦ÄÜ´úÂëµÄ£¬Ê¹ÓÃÕâÀï½évDTLinuxÁªÃË
ÉܵÄÑ­»·´úÂëÒѾ­¿ÉÒÔÂú×ãºóÃæ½øÐдúÂëÉú³ÉµÄÐèÒªÁË¡£ËùÒÔ±¾Îĵľ²Ì¬Ñ­»·´úÂë½éÉÜÒ²vDTLinuxÁªÃË
¿ÉÒÔµ½´Ë´òסÁË¡£vDTLinuxÁªÃË

#if 0vDTLinuxÁªÃË
vDTLinuxÁªÃË
    ÔÚÇ°ÃæµÄÁ½ÕÂÀïÃæÌÖÂÛÁËC++Ä£°åÔª×÷ΪC++µÄÒ»ÃŶþ¼¶ÓïÑÔµÄÎÊÌ⣬²¢¸ø³öÁ˳£ÓõÄvDTLinuxÁªÃË
³ÌÐòÉè¼ÆÓïÑÔµÄÓïËØµÄʵÏÖ£¬ÊÇÒ»¸öÍ걸µÄÌåϵ¡£×ܵÄÀ´Ëµ£¬Ç°ÃæµÄÕ½ÚÀïÃæÊDzÉÓÃÁËÏÂvDTLinuxÁªÃË
ÃæµÄ·½·¨À´ÊµÏÖÕâЩÓïËØµÄ£ºvDTLinuxÁªÃË
vDTLinuxÁªÃË
    (1)ÕûÊý¼ÆËã½á¹ûͨ¹ýenum±äÁ¿½øÐб£´ævDTLinuxÁªÃË
vDTLinuxÁªÃË
    (2)ÀàÐͼÆËã½á¹ûͨ¹ýtypedef½øÐб£´ævDTLinuxÁªÃË
vDTLinuxÁªÃË
    (3)?:ÔËËã·û¿ÉÓÃÀ´ÊµÏÖ¾²Ì¬ÕûÐͱí´ïʽµÄÑ¡Ôñ¹¦ÄÜvDTLinuxÁªÃË
vDTLinuxÁªÃË
    (4)Ä£°åÌØ»¯¿ÉÓÃÀ´ÊµÏÖ¾²Ì¬ÀàÐͱí´ïʽµÄÑ¡Ôñ¹¦ÄÜvDTLinuxÁªÃË
vDTLinuxÁªÃË
    (5)Ä£°åµÝ¹é¿ÉÓÃÀ´ÊµÏÖ¾²Ì¬Ñ­»·£¬Ñ­»·±ä»¯ÔªËØÖ»Äܹ»ÊÇÕûÊývDTLinuxÁªÃË
vDTLinuxÁªÃË
    (6)ͨ¹ýÕûÊý¿ÉÒÔÓ³Éäµ½ÀàÐÍ£¬ËùÒÔÑ­»·±ä»¯ÔªËØÒ²¿ÉÒÔ¼ä½ÓΪÀàÐÍvDTLinuxÁªÃË
vDTLinuxÁªÃË
    ÕâÒ»ÕÂÀïÃæÎÒÃǽ«ÒªÌÖÂÛÁíÍâµÄÎÊÌ⣬Ëù²ÉÓõķ½·¨Ò²ÊÇÕâЩ·½·¨¡£ÄÇô±¾ÎĽ«ÒªÌÖvDTLinuxÁªÃË
ÂÛµÄÎÊÌâÊÇ£ºvDTLinuxÁªÃË
vDTLinuxÁªÃË
    ÈçºÎʵÏÖÀàÐÍÑ­»·£¬Ò²¾ÍÊÇÉÏÃæ×ܽá³öÀ´µÄµÚ(6)ÖÖ¼¼ÇÉ¡£vDTLinuxÁªÃË
vDTLinuxÁªÃË
    ¹ØÓÚÕâÒ»µãµÄÌÖÂÛ£¬ÎÒÈÏÕæ²Î¿¼ÁË<>Ò»ÊéµÄTypelist£¬ÔÚ±¾ÎÄÖÐvDTLinuxÁªÃË
½«»áÒÔconsÀ´±í´ïÀàÐÍÁбíµÄ¸ÅÄ²¢¶Ô<>Ò»ÊéµÄTypelistÏà¹ØµÄ²ÙvDTLinuxÁªÃË
×÷½øÐо«¼ò£¬µÃµ½ÎÒÃǽ«»áÔÚÉú³É´úÂëµÄ¹ý³ÌÖÐʹÓõÄÄ£°åÔªº¯Êý¡£²»Óõĸù±¾²»»á¿¼ÂÇvDTLinuxÁªÃË
£¬ËùÒÔΪÁËʹ³·ÏúºÍÖØ×ö¿â¾¡¿ÉÄܵĶÀÁ¢Ð©£¬ËùÒÔÎÒ²»²ÉÓÃLoki¿â£¬ÕâÑùʹµÃ¸Ã³·ÏúºÍÖØvDTLinuxÁªÃË
×ö¿âµÄ°²×°±È½Ï¼òµ¥¡£vDTLinuxÁªÃË
vDTLinuxÁªÃË
    Ϊ´Ë£¬Ê×ÏÈʵÏÖÒ»¸öÀàÐÍ´®ÀàÐÍÃû½Ðcons£¬´úÂëÈçÏ£ºvDTLinuxÁªÃË
    vDTLinuxÁªÃË
#endifvDTLinuxÁªÃË
vDTLinuxÁªÃË
#ifdef CODE_NOTEvDTLinuxÁªÃË
//consµÄʵÏÖ£¬²ÉÓúÍSTLÀàËÆµÄÀàÐÍÃüÃû·½Ê½vDTLinuxÁªÃË
template vDTLinuxÁªÃË
struct consvDTLinuxÁªÃË
{vDTLinuxÁªÃË
        typedef FirstType  first_type;vDTLinuxÁªÃË
        typedef SecondType second_type;vDTLinuxÁªÃË
};vDTLinuxÁªÃË
//ÓÐÁËÉÏÃæµÄconsµÄʵÏÖ£¬ÏÖÔھͿÉÒÔºÜÈÝÒ׵Ľ«ÀàÐÍ·ÅÈëµ½Õâ¸ö´®ÖÐÁË£ºvDTLinuxÁªÃË
typedef consvDTLinuxÁªÃË
        consvDTLinuxÁªÃË
        consvDTLinuxÁªÃË
        consvDTLinuxÁªÃË
        consvDTLinuxÁªÃË
        double> > > > > CONS;vDTLinuxÁªÃË
//ÉÏÃæµÄ´úÂ붨ÒåÁËÒ»¸ö6Öлù±¾ÀàÐÍ×÷ÎªÔªËØµÄÀàÐÍ´®CONS£¬ÄÇô¸ÃÔõôʵÏÖ¶ÔÉÏÃæµÄÀàvDTLinuxÁªÃË
//Ð͵IJÙ×÷ÄØ£¿×ÐϸÏëÏëCÓïÑÔÀïÃæµÄ×Ö·û´®ÊÇÈçºÎ´¦Àí×Ö·û´®µÄÖÕ½áµÄ°¡£¡ºÇºÇ¿ÉÄÜÄãÒÑvDTLinuxÁªÃË
//¾­Ïëµ½ÁË£¬ÐèÒªÒ»¸öÌØÊâµÄÖÕ½á·û£¬¶ÔÁË£¬ÎªÁËÄܹ»²Ù×÷ÉÏÃæµÄÀàÐÍÈÝÆ÷ÎÒÃÇÐèÒª¶¨ÒåvDTLinuxÁªÃË
//Ò»¸öÖÕ½á·ûÀàÐÍ£ºvDTLinuxÁªÃË
struct null_type;vDTLinuxÁªÃË
//ÓÐÁËÉÏÃæµÄnull_type£¬ÏÖÔÚµÄÀàÐÍÈÝÆ÷CONSÖØÐ±íÊöÈçÏ£ºvDTLinuxÁªÃË
typedef consvDTLinuxÁªÃË
        consvDTLinuxÁªÃË
        consvDTLinuxÁªÃË
        consvDTLinuxÁªÃË
        consvDTLinuxÁªÃË
        consvDTLinuxÁªÃË
        null_type> > > > > > CONS;vDTLinuxÁªÃË
#endif//CODE_NOTEvDTLinuxÁªÃË
vDTLinuxÁªÃË
#if 0vDTLinuxÁªÃË
vDTLinuxÁªÃË
    ÓÐÁËÉÏÃæµÄconsÀàÐͺÍÖÕ½á·ûÒѾ­¿ÉÒÔÓÃÀ´±í´ïÀàÐÍ´®µÄ¸ÅÄîÁË£¬¼ÈÈ»ÓÐÁËÀàÐÍ´®£¬vDTLinuxÁªÃË
ÄǾÍÓ¦¸ÃÓÐÀàÐÍ´®µÄÏà¹Ø²Ù×÷£¬ÕâÀïÎÒÃÇÊ×ÏÈ¿¼ÂǵÄÊÇ£¬ÕâЩ²Ù×÷½«»áÓ¦Óõ½Ê²Ã´µØ·½£¿vDTLinuxÁªÃË
¿¼ÂÇÒ»ÏÂÈçºÎʹÓÃÇ°ÃæµÄLOOP¾²Ì¬Ñ­»·À´±éÀúcons´®ÖеÄËùÓÐÀàÐÍÄØ£¿ºÜÏÔȻͨ¹ý±¾ÎÄ¿ªvDTLinuxÁªÃË
Í·¶ÔǰÎĵÄ×ܽá(5)ÎÒÃÇÖªµÀ¾²Ì¬LOOPÑ­»·¿ÉÒԱ仯µÄÖ»ÄÜÊÇÕûÊý£¬ÄÇôºÜ×ÔÈ»µÄΪÁËÄܹ»vDTLinuxÁªÃË
ʵÏÖÀàÐͱéÀú±ØÐëʵÏÖÕûÊýºÍÀàÐ͵ÄÓ³ÉäºÍ·´Ó³ÉäÔªº¯Êý¡£Ò»ÖÖÖ±½ÓµÄ·½Ê½¾ÍÊǸù¾ÝË÷ÒývDTLinuxÁªÃË
ÖµµÃµ½cons´®ÖеÄÿһ¸öÀàÐÍ£¬ÕâÑù¾ÍÐèÒªÖÁÉÙÁ½¸öÔªº¯ÊýÀ´Íê³ÉÕâÖÖÑ­»·£¬ÕâÁ½¸öÔªº¯vDTLinuxÁªÃË
Êý·Ö±ðÊÇ£ºvDTLinuxÁªÃË
vDTLinuxÁªÃË
    (a)lengthÔªº¯Êý£¬ÓÃÀ´»ñµÃcons´®µÄ³¤¶ÈvDTLinuxÁªÃË
    vDTLinuxÁªÃË
    (b)typeÔªº¯Êý£¬ÓÃÀ´¸ù¾ÝË÷ÒýÖµµÃµ½ÏàÓ¦µÄcons´®ÔÚ¸ÃλÖõÄÀàÐÍvDTLinuxÁªÃË
vDTLinuxÁªÃË
    ÓÐÁËÉÏÃæµÄÁ½¸öÔªº¯Êý¾Í¿ÉÒԺܷ½±ãµÄʹÓÃLOOP¾²Ì¬Ñ­»·À´ÊµÏÖÀàÐͱéÀúµÄ¹ý³ÌÁË¡£vDTLinuxÁªÃË
ÏÖÃæÀ´¿´¿´ÈçºÎʵÏÖÕâÁ½¸öÔªº¯Êý£ºÔÚ¸ø³öÕâÁ½¸öÔªº¯ÊýµÄʵÏÖ֮ǰ£¬ÎªÁËÃ÷È·Æð¼û£¬ÐèvDTLinuxÁªÃË
Ҫ׼ȷ¶¨ÒåÕâÁ½¸öÔªº¯ÊýµÄ·µ»ØÖµµÄÒâÒåvDTLinuxÁªÃË
vDTLinuxÁªÃË
    (length)¸ù¾Ý¾ßÌåµÄCONSÀàÐ͵õ½µÄÊÇcons´®µÄ³¤¶È£¬Õâ¸ö³¤¶ÈÖ¸µÄÊDz»°üÀ¨ÀàÐÍ´®vDTLinuxÁªÃË
½áÊø·ûµÄÔªËØ¸öÊý£¬ÕâÒ»µãºÍC×Ö·û´®µÄstrlen¿âº¯ÊýµÄÐÐΪÀàËÆ¡

 3/11   |‹ ‹‹ 1 2 3 4 5 6 ›› ›|

À´¶¥Ò»ÏÂ
½ü»ØÊ×Ò³
·µ»ØÊ×Ò³
·¢±íÆÀÂÛ ¹²ÓÐÌõÆÀÂÛ
Óû§Ãû: ÃÜÂë:
ÑéÖ¤Âë: ÄäÃû·¢±í
Ïà¹ØÎÄÕÂ
    ÎÞÏà¹ØÐÅÏ¢
À¸Ä¿¸üÐÂ
À¸Ä¿ÈÈÃÅ