C++ 杂项 1

1.文件操作 : 

(发现自己不会打好尴尬 记一下)

int main()
{
	freopen("blabblab.in","r",stdin);//blabblab按题目要求输入文件名
	freopen("blabblab.out","w",stdout);//这两句放在主程序里的最前面
	//中间就是程序啦
	fclose(stdin);//然后结尾
	fclose(stdout);//同上
	return 0;//这个要放最后
}

2. register :

暗♂示系统把某变量存在寄存器里(注意不能用来暗♂示全局变量) 并没有多大用的优化 听说比赛能用??

通常本人加在循环最里面一层=-=因为感觉寄存器放不下太多 不过我对这些设备的知识完全没了解过 只是出于人性化2333~

如 一次用完三行就消掉的子程序——邻接表存边

#define re register
void add(re int u,re int v)
{
	edge[++tot].to = v;
	edge[tot].next = first[u];
	first[u] = tot;
}

又如 最内层的循环=-=就不放了

3. for循环 :

其实当我看见说唱风靡世界 黑人当上美国总统 我就发现了——

发现了for循环可以乱用~~~~~

for (1 初始条件 ; 2 终止条件 ; 3 下次循环时的变量赋值)

其中 循环是先看1 然后看2 就直接进入循环了!!

然后循环完了再看3 之后看2 再进入循环=-= 所以3大概可以直接视为循环 但不能加if之类的

因此 本人发现许多有趣的for循环

I.无限循环自行退出

可用以多组数据输入 特定条件退出~

for ( ; ; ) {++a; if (a > 233) break;}

II.定义多重循环变量

缩行必备~真的缩起来我都被自己吓到了

char q[233][233];
for (int a = 1,len = 0,mx = strlen(a); a <= 233 ; a ++,len = 0,mx = strlen(a))
	while (++len <= mx) if (q[a][len] == 'a') ++tot;

III.一行完事型(不走寻常路)

直接在for循环的括号后加分号~缩行必备~本人用于离散化~

for (int a = 1 ; a <= n ; s[a] = a,a ++);

4.位运算(部分)等效表达

位运算比一般运算快~~

还有 >>= 貌似比 >= 快的样子

Expression_1   Expression_2
   a * 2          a << 1
 a * 2 + 1      a << 1 | 1
   a / 2          a >> 1
   a = 0          a ^= a
 a = a >> 1      a >>= 1
 a = a << 1      a <<= 1
  a >= 1         a >>= 1
  a <= 1         a <<= 1

猜你喜欢

转载自blog.csdn.net/Frocean/article/details/81013323