µÇ½ÂÛ̳
|
ÂÛ̳ע²á
|
¼ÓÈëÊÕ²Ø
|
ÉèΪÊ×Ò³
|
RSS
Ê×Ò³
LinuxƵµÀ
Èí¼þÏÂÔØ
¿ª·¢ÓïÑÔ
¼¼ÊõÂÛ̳
ǶÈëʽƵµÀ
|
Êý¾Ý¿â¿ª·¢
|
WEB¿ª·¢
|
Èí¼þ¿ª·¢
|
ǶÈëÓ¦ÓÃ
|
ÄÚºËÑо¿
|
SHELL
|
ÊäÈëÄúµÄËÑË÷×Ö´Ê
Ìá½»ËÑË÷±íµ¥
Äúµ±Ç°µÄλÖãº
Ê×Ò³
>
LinuxƵµÀ
>
Linux¿ª·¢Çø
>
Èí¼þ¿ª·¢
C++×Ô¶¯»¯(Ä£°åÔª)±à³Ì»ù´¡ÓëÓ¦ÓÃ
ʱ¼ä£º2006-06-16 11:29:29 À´Ô´£º
ÖйúITʵÑéÊÒ
×÷Õߣº
LinuxÁªÃËÊÕ¼¯
£
vDTLinuxÁªÃË
vDTLinuxÁªÃË
(type)¸ù¾Ý¾ßÌåµÄCONSÀàÐͺÍÒ»¸ö¸ø¶¨µÄË÷ÒýÖµµÃµ½Ò»¸öÀàÐÍ£¬Ö¸µÄÊÇconsÀàÐÍ´®ÖÐ
vDTLinuxÁªÃË
µÄÖ¸¶¨Ë÷ÒýÖµµÄλÖõÄÀàÐÍ£¬Õâ¸öË÷ÒýÖµ·ûºÏCÓïÑԵĹ淶£¬ÊÇ´Ó0¿ªÊ¼±àºÅµÄ¡£
vDTLinuxÁªÃË
vDTLinuxÁªÃË
ÔÚ¸ø³ö¾ßÌåµÄÕâÁ½¸öÔªº¯ÊýµÄʵÏÖ֮ǰÐèÒª½«Ç°ÃæµÄÕ½ÚÖеÄÃüÃû¹æ·¶ËµÃ÷һϣº
vDTLinuxÁªÃË
vDTLinuxÁªÃË
(A)Èç¹ûÔªº¯ÊýµÄ·µ»ØÖµÎªÕûÊý£¬ÄÇô·µ»ØÖµÃû³ÆÃüÃûΪvalue
vDTLinuxÁªÃË
vDTLinuxÁªÃË
(B)Èç¹ûÔªº¯ÊýµÄ·µ»ØÖµÎªÀàÐÍ£¬ÄÇô·µ»ØÖµÃû³ÆÃüÃûΪresult
vDTLinuxÁªÃË
vDTLinuxÁªÃË
ºÃÁË£¬ÏÖÔÚ¿ÉÒÔ¿´¿´ÈçºÎʵÏÖÕâÁ½¸öÔªº¯ÊýÁË£º
vDTLinuxÁªÃË
vDTLinuxÁªÃË
#endif
vDTLinuxÁªÃË
vDTLinuxÁªÃË
#ifdef CODE_NOTE
vDTLinuxÁªÃË
//lengthÔªº¯ÊýµÄʵÏÖ
vDTLinuxÁªÃË
template
struct length;
vDTLinuxÁªÃË
template<>struct length
vDTLinuxÁªÃË
{//·µ»ØÖµÎªÕûÊý£¬ÃüÃûΪvalue
vDTLinuxÁªÃË
enum{value=0};
vDTLinuxÁªÃË
};
vDTLinuxÁªÃË
template
vDTLinuxÁªÃË
struct length
>
vDTLinuxÁªÃË
{//·µ»ØÖµÎªÕûÊý£¬ÃüÃûΪvalue
vDTLinuxÁªÃË
enum{value=1+length
::value};
vDTLinuxÁªÃË
};
vDTLinuxÁªÃË
//typeÔªº¯ÊýµÄʵÏÖ
vDTLinuxÁªÃË
template
struct type;
vDTLinuxÁªÃË
template
vDTLinuxÁªÃË
struct type
,0>
vDTLinuxÁªÃË
{//·µ»ØÖµÎªÀàÐÍ£¬ÃüÃûΪresult
vDTLinuxÁªÃË
typedef FirstType result;
vDTLinuxÁªÃË
};
vDTLinuxÁªÃË
template
vDTLinuxÁªÃË
struct type
,i>
vDTLinuxÁªÃË
{//·µ»ØÖµÎªÀàÐÍ£¬ÃüÃûΪresult
vDTLinuxÁªÃË
typedef typename type
::result result;
vDTLinuxÁªÃË
};
vDTLinuxÁªÃË
#endif//CODE_NOTE
vDTLinuxÁªÃË
vDTLinuxÁªÃË
#if 0
vDTLinuxÁªÃË
vDTLinuxÁªÃË
Á½¸öÐèÒªµÄÔªº¯ÊýÒѾ³É¹¦µÄ¸ø³öÁË£¬Èç¹ûÓÐʲô²»Çå³þµÄµØ·½Ò²¿ÉÒԲμû<
vDTLinuxÁªÃË
C++ Design>>Ò»ÊéµÄTypelistµÄLengthÔªº¯ÊýºÍTypeAtÔªº¯ÊýµÄ½âÊÍ£¬»ù±¾ÉÏÊÇÒ»ÑùµÄ£¬
vDTLinuxÁªÃË
ÕâÀï²»ÔÚ½øÐйý¶àµÄ½âÊÍ¡£ÔÚÕâÀïÎÒÃÇËùÖØÊÓµÄÊÇÈçºÎʹÓÃÕâÁ½¸öÔªº¯ÊýÀ´ÊµÏÖÎÒÃǵÄÀà
vDTLinuxÁªÃË
ÐͱéÀúËã·¨¡£ÏÖÔÛÍòʾ߱¸ÁË£¬¿ÉÒÔ¿ªÊ¼±¾ÕµÄÖÐÐÄÄÚÈÝ£ºÊµÏÖÀàÐ͵ıéÀúËã·¨£¡²»¹ýÔÚ
vDTLinuxÁªÃË
¸ø³ö¾ßÌåµÄ´úÂë֮ǰ»¹ÐèÒª×öÒ»¼þÊÂÇ飬ÄǾÍÊǽ«Ö®Ç°µÄ´úÂë±£´æµ½Ò»¸öÎļþÖУ¬ÎªÁËͳ
vDTLinuxÁªÃË
Ò»Æð¼û£¬ÎÒÃǾÍÏȽ«Õâ¸öÎļþÃûÃüÃûΪmeta.h°É£¡¸ÃÎļþµÄÏêϸÄÚÈÝÔÚ±¾ÎĵÄ×îºó¸ø³ö¡£
vDTLinuxÁªÃË
ÏÖÔÚ¿´Ò»ÏÂÈçºÎʵÏÖÎÒÃǵÄÀàÐͱéÀúËã·¨°É£¬¼ûCODE1Ëùʾ£º
vDTLinuxÁªÃË
vDTLinuxÁªÃË
#endif
vDTLinuxÁªÃË
vDTLinuxÁªÃË
#ifdef CODE1
vDTLinuxÁªÃË
#include
vDTLinuxÁªÃË
#include "meta.h"//¸ÃÎļþµÄ¾ßÌåÄÚÈݼû±¾ÎĵÄ×îºó
vDTLinuxÁªÃË
namespace xcl = pandaxcl;//ËõдÃû×Ö¿Õ¼ä
vDTLinuxÁªÃË
//ΪÁËÄܹ»²âÊÔtypeÔªº¯ÊýÐèÒª¶¨ÒåÏÂÃæµÄһЩ¶îÍâµÄ²âÊÔÄ£°å
vDTLinuxÁªÃË
template
struct traits;
vDTLinuxÁªÃË
template<> struct traits
{static const char*name(){return "char";}};
vDTLinuxÁªÃË
template<> struct traits
{static const char*name(){return "int";}};
vDTLinuxÁªÃË
template<> struct traits
{static const char*name(){return "short";}};
vDTLinuxÁªÃË
template<> struct traits
{static const char*name(){return "long";}};
vDTLinuxÁªÃË
template<> struct traits
{static const char*name(){return "float";}};
vDTLinuxÁªÃË
template<> struct traits
{static const char*name(){return "double";}};
vDTLinuxÁªÃË
//±ØÐëÍâ¼ÓÒ»²ã°ü¹ü²ãÀ´´«µÝ¶îÍâµÄÀàÐͲÎÊý
vDTLinuxÁªÃË
template
struct Config
vDTLinuxÁªÃË
{
vDTLinuxÁªÃË
template
struct Function
vDTLinuxÁªÃË
{
vDTLinuxÁªÃË
static void execute()
vDTLinuxÁªÃË
{
vDTLinuxÁªÃË
//ÄãµÄ´úÂëÔÚÕâÀï±àд
vDTLinuxÁªÃË
typedef typename xcl::type
::result CT;//µ±Ç°ÀàÐ͵ÄÒâ˼
vDTLinuxÁªÃË
std::cout << i << " : " << traits
::name() << std::endl;
vDTLinuxÁªÃË
}
vDTLinuxÁªÃË
};
vDTLinuxÁªÃË
};
vDTLinuxÁªÃË
int main()
vDTLinuxÁªÃË
{
vDTLinuxÁªÃË
typedef xcl::cons
vDTLinuxÁªÃË
xcl::cons
vDTLinuxÁªÃË
xcl::cons
vDTLinuxÁªÃË
xcl::cons
vDTLinuxÁªÃË
xcl::cons
vDTLinuxÁªÃË
xcl::cons
vDTLinuxÁªÃË
xcl::null_type> > > > > > CONS;
vDTLinuxÁªÃË
std::cout << "CONSÀàÐÍ´®µÄ³¤¶ÈΪ£º" << xcl::length
::value << std::endl;
vDTLinuxÁªÃË
xcl::LOOP
::Function,0,xcl::length
::value,1>::execute();
vDTLinuxÁªÃË
return 0;
vDTLinuxÁªÃË
}
vDTLinuxÁªÃË
#endif//CODE1
vDTLinuxÁªÃË
////////////////////////////////////////////////////////////////////////////////
vDTLinuxÁªÃË
//¸Ã³ÌÐòµÄÔËÐнá¹ûΪ£º
vDTLinuxÁªÃË
/********************************************************
vDTLinuxÁªÃË
CONSÀàÐÍ´®µÄ³¤¶ÈΪ£º6
vDTLinuxÁªÃË
0 : char
vDTLinuxÁªÃË
1 : int
vDTLinuxÁªÃË
2 : short
vDTLinuxÁªÃË
3 : long
vDTLinuxÁªÃË
4 : float
vDTLinuxÁªÃË
5 : double
vDTLinuxÁªÃË
************************************************************/
vDTLinuxÁªÃË
////////////////////////////////////////////////////////////////////////////////
vDTLinuxÁªÃË
#if 0
vDTLinuxÁªÃË
vDTLinuxÁªÃË
´ÓCODE1ÖеĴúÂë¿ÉÒÔ¿´³ö£¬ÎÒÃÇÒѾ³É¹¦µÄʵÏÖÁËÀàÐ͵ÄÑ»·±éÀú¡£Ö®ËùÒÔÐèҪʵÏÖ
vDTLinuxÁªÃË
ÕâÖÖ¹¦ÄÜÊÇÒòΪÕâÖÖ¹¦ÄÜÄܹ»ÔÚÏÂÒ»ÕÂÖжÔ×Ô¶¯Éú³ÉµÄ´úÂëÖ´ÐÐÈÎÒâµÄ²Ù×÷£¬ÕâÒ»µãÔÚ×Ô
vDTLinuxÁªÃË
¶¯Éú³É´úÂëÉϷdz£ÖØÒª£¬Èç¹ûÕâÒ»µãûÓÐʵÏÖ£¬C++Ä£°åÔª×Ô¶¯Éú³ÉµÄ´úÂëºÍCºêÉú³ÉµÄ´ú
vDTLinuxÁªÃË
ÂëÏà±È½«²»»áÓÐʲôÉñÆæÖ¸³ö¡£ÕâÒ²ÊÇÎÒ½«Õâ¶ÎÄÚÈݰ²ÅÅÔÚÕâÒ»ÕµÄÖ÷ÒªÔÒò¡£¿ÉÄÜÄú»¹
vDTLinuxÁªÃË
ûÓÐÈÏʶµ½ÕâÀïµÄ´úÂëµÄÖØÒªÐÔ£¬²»¹ýÕâûʲô¹ØÏµ£¬ÎÒ»áÔÚºóÐøµÄÕ½ÚÖÐÏêϸ˵Ã÷ÕâÀï
vDTLinuxÁªÃË
µÄÀàÐͱéÀúµÄʹÓùý³Ì£¬²¢ÊµÏÖ¶¯Ì¬´úÂëºÍ¾²Ì¬´úÂëµÄÁ¬½Ó¡£ÕâÑùÖ®ºóÄú×ÔÈ»¾Í»áÁ˽Ȿ
vDTLinuxÁªÃË
ÕµÄÒâÒåËùÔÚÁË:)
vDTLinuxÁªÃË
vDTLinuxÁªÃË
ÏÂÃæ¸ø³öCODE1ÖеÄÍ·Îļþmeta.hµÄÄÚÈÝÈçÏ£º
vDTLinuxÁªÃË
vDTLinuxÁªÃË
#endif
vDTLinuxÁªÃË
#ifdef CODE_NOTE
vDTLinuxÁªÃË
#pragma once
vDTLinuxÁªÃË
namespace pandaxcl{
vDTLinuxÁªÃË
//////////////////////////////////////////////////////////////////////
vDTLinuxÁªÃË
template
vDTLinuxÁªÃË
struct IF
vDTLinuxÁªÃË
{
vDTLinuxÁªÃË
typedef Then result;//½«ThenÀàÐÍ×÷ΪÌõ¼þÎªÕæµÄ·µ»ØÖµ£¨·µ»ØÖµÎªÀàÐÍ£©
vDTLinuxÁªÃË
};
vDTLinuxÁªÃË
template
vDTLinuxÁªÃË
struct IF
vDTLinuxÁªÃË
{
vDTLinuxÁªÃË
typedef Else result;//½«ElseÀàÐÍ×÷ΪÌõ¼þΪ¼ÙµÄ·µ»ØÖµ£¨·µ»ØÖµÎªÀàÐÍ£©
vDTLinuxÁªÃË
};
vDTLinuxÁªÃË
//////////////////////////////////////////////////////////////////////
vDTLinuxÁªÃË
//////////////////////////////////////////////////////////////////////
vDTLinuxÁªÃË
////¼ÓÈëÒ»¸öÍ⸲²ãÀ´´«µÝ¶îÍâµÄÄ£°å²ÎÊý
vDTLinuxÁªÃË
template
class Function,size_t start,size_t finish,size_t step>
vDTLinuxÁªÃË
struct LOOP
vDTLinuxÁªÃË
{
vDTLinuxÁªÃË
//ΪÁËÄܹ»ÕýÈ·µÄ¼ÆËã³öʵ¼ÊµÄÑ»·ÖÕÖ¹±äÁ¿£¬ÐèÒª¶Ô¸ø¶¨µÄÖÕÖ¹±äÁ¿
vDTLinuxÁªÃË
//½øÐмÆË㣬ÒÔÂú×ãÕýÈ·µÄÑ»·ÓïÒå
vDTLinuxÁªÃË
enum{real_finish=(finish/step*step+start)};
vDTLinuxÁªÃË
static void execute()
vDTLinuxÁªÃË
{
vDTLinuxÁªÃË
LOOP_BODY
::execute();
vDTLinuxÁªÃË
}
vDTLinuxÁªÃË
//ÏÂÃæµÄÕâ¸öÄ£°åº¯ÊýÊÇΪÁËÄܹ»ÊµÏÖ¾²Ì¬´úÂëºÍ¶¯Ì¬´úÂëÁ¬½Ó
vDTLinuxÁªÃË
template
vDTLinuxÁªÃË
static void execute(EnvironmentType&e)
vDTLinuxÁªÃË
{
vDTLinuxÁªÃË
LOOP_BODY
::execute(e);
vDTLinuxÁªÃË
}
vDTLinuxÁªÃË
private:
vDTLinuxÁªÃË
//ÒýÈëÁËÒ»¸ö²¼¶ûÐ͵ÄÄ£°å²ÎÊýÓÃÀ´È·¶¨Ñ»·µÄÖÕÖ¹Ìõ¼þ
4
/
11
|‹
‹‹
2
3
4
5
6
7
››
›|
À´¶¥Ò»ÏÂ
·µ»ØÊ×Ò³
·¢±íÆÀÂÛ
¹²ÓÐ
ÌõÆÀÂÛ
Óû§Ãû:
ÃÜÂë:
ÑéÖ¤Âë:
ÄäÃû·¢±í
Ïà¹ØÎÄÕÂ
ÎÞÏà¹ØÐÅÏ¢
À¸Ä¿¸üÐÂ
À¸Ä¿ÈÈÃÅ
Õ¾ÄÚËÑË÷£º
LinuxƵµÀ
ÏÂÔØÆµµÀ
ͼ¿â
ÉÌÆ·
ǶÈëʽƵµÀ
¸ß¼¶ËÑË÷
ÍøÕ¾Ê×Ò³
|
¹ØÓÚÎÒÃÇ
|
·þÎñÌõ¿î
|
¹ã¸æ·þÎñ
|
ÁªÏµÎÒÃÇ
|
ÍøÕ¾´óÈ«
|
ÃâÔðÉùÃ÷
|
·µ»Ø¶¥²¿
Copyright © 2007-2008 xxlinux.com, All rights reserved.
Powered by linuxÁªÃË
¾©ICP±¸05012402ºÅ