额。。神牛别骂我火星额囧。。只是最近看到一些C++中比较神奇的东西。。。
#define
其实define的作用大得惊人。。可以大大简化代码甚至代替template
1. #x
先看下这个代码
#define Debug(x) cout<<#x<<"="<<(x)<<endl;
int i=5;Debug(i);
可能你不知道#x是什么意思,不过运行一下啊就会发现结果是i=5说明#x就是带进去的这个东西的字符串形式。。运用这个形式,可以方便的做一个像上面那个那个Debug的函数,像我这样从来不调试的NC来说,真是福音啊。。
2.##x
一样,先看下这个代码
#define D(x) m##x
int D(x)=0;cout<<m1<<endl;
结果能输出并且就是0.。
也就是说##x就是把它看成原来的一段字符(不是字符串)接在后面。。
运用这个可以很方便的声明和初始化多个变量。。。
#define D(x) int m##x=0
D(0);D(1);D(2);D(3);D(4);D(5);D(6);D(7);
3.多行
#define是可以多行的。只要在除了最后一行的每一行后面加一个就可以了。。
比如
#define Swap(T,x,y)
{
T tmp=x;x=y;y=tmp;
}
int a=0,b=1;Swap(int,a,b);Debug(a);Debug(b);
这样就可以甚至拿来代替template。。这种东西在某些大量使用的代码段中可以大大方便Coder
还有一些很强大的符号
a<?b <=> min(a,b)
a>?b <=>max(a,b)
a<?=b <=> a=min(a,b)
a>?=b <=> a=max(a,b)
另外我快被Java搞死了。。这玩意太精细了。。写起来累死人。。。晚上就要有TopCoder比赛了。。我还是用C++算了。。.
最诡异的是algorithm这个库居然能够加快程序的速度?????见鬼啊。。
19点准时沙发膜拜神牛!
回复huyuanming11:Orz神牛!!!!!!!!
Orz!!!
Orz