语法上的小trick
构造函数
虽然不写构造函数也是可以的,但是可能会开翻车,所以还是写上吧。:
提供三种写法:
使用的时候只用:
注意,这里的A[i]=gg(3,3,3)
的“gg”不能打括号,否则就是强制转换了。
快速读入
inline char nc(){
static char buf[100000],*p1=buf,*p2=buf;
return p1==p2&&(p2=(p1=buf)+fread(buf,1,100000,stdin),p1==p2)?EOF:*p1++;
}
inline int _read(){
char ch=nc();int sum=0;
while(!(ch>='0'&&ch<='9'))ch=nc();
while(ch>='0'&&ch<='9')sum=sum*10+ch-48,ch=nc();
return sum;
}
_read()
函数返回的就是读入信息。
迭代器
对于一个迭代器it
,那么它代表了一个内存位置,我们可以用*it
得到它代表的值。
对于一些STL,我们可以遍历其中元素。以set
为例:
int a[] = {1,2,3};
set<int> s;
set<int>::iterator it;
s.insert(a,a+3);
for(it=s.begin();it!= s.end() ; ++it)cout<<*it<<" ";
重载运算符
inline matrix operator + (matrix &a, matrix &b) {//传参直接传指针,不需要拷贝,跑的更快。
static matrix res;//static创建了一个只能在此函数内使用的全局变量,使每次调用函数不用都开空间,节省时间。
rep(i) rep(j) res.array[i][j] = inc(a.array[i][j], b.array[i][j]);
return res;
}