c++加速方法大全

我们平常写代码的时候,经常超时,非常难受,所以,我写了这篇文章,让你的代码提升速度(这些方法作者亲测有效,用了这些方法,足足提升了1秒!虽然最后题目还是没过)

1、读入、输出加速:

cpp 复制代码
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);

这三行代码可以提升我们cin和cout的读入和输出速度,具体原理我也不太懂,反正你也不用知道,会用就行了

但是我们要注意,就算我们用了这三行代码,cin和cout的读入输出速度还是没有printf和scanf快,所以想要加速的更快,就要用printf和scanf

这里还有一种加速方法,叫快读快写,似乎比printf更快(我也不知道是不是真的)

cpp 复制代码
inline int read(){//快读
    int x=0,w=0;
    char ch=0;
    while(!isdigit(ch)){w|=ch=='-';ch=getchar();}
    while(isdigit(ch)){x=(x<<3)+(x<<1)+(ch^48);ch=getchar();}
    return w ? -x : x;
}
inline void write(int x){//快写
    if(x<0)putchar('-'),x=-x;
    if(x>9)write(x/10);putchar(x%10+'0');
}

原理嘛,多看几遍大概都能看懂,主要是怎么用

快读这么用:

cpp 复制代码
int x;//要读入x
x=read();//x=read读入的值

快写这么用:

cpp 复制代码
int x=5;//要输出x
write(x);//输出x

注意,快读不能读入字符,只能读入数字(读入字符一点反应也没有);快写不能写字符,只能输出数字

快读快写还用升级版:

cpp 复制代码
namespace IO{
int len = 0;
char ibuf[(1<<20)+1],*iS,*iT,out[(1<<25)+1];
#define gh()    \
    (iS==iT?iT=(iS=ibuf)+fread(ibuf,1,(1<<20)+1,stdin),    \
    (iS==iT?EOF:*iS++):*iS++)
#define reg register
inline int read(){
	reg char ch=gh();
	reg int x=0;
	reg char t=0;
	while(ch<'0'||ch>'9')
		t|=ch=='-',ch=gh();
	while(ch>='0'&&ch<='9')
		x=x*10+(ch^48),ch=gh();
	return t ? -x : x;
}
inline void putc(char ch){
	out[len++]=ch;
}
template <class T> inline void write(T x){
	if (x < 0)
		putc('-'),x=-x;
	if (x > 9)
		write(x/10);
out[len++]=x%10+48;
}
inline void flush(){
	fwrite(out,1,len,stdout);
	len=0;
}
}
using IO::flush;
using IO::putc;
using IO::read;
using IO::write;

虽然我知道这是升级版,但我不会用╥﹏╥

2、O3优化:

cpp 复制代码
#pragma GCC optimize(2)

写代码的时候,把这句写进去(写在头文件下面),就能加速了,这是O2优化,那什么是O3优化呢?

cpp 复制代码
#pragma GCC optimize(3)

这就是O3优化,把2改成3就好了,很简单吧?而且O3确实比O2快(亲测有效)


好了,这就是我知道的所有加速方法了,当然还是有一些小细节的东西,比如在循环内定义变量合在循环外定义变量有什么区别,这些我就不太懂了,你们可以找别的问文章

相关推荐
快乐的划水a8 小时前
组合模式及优化
c++·设计模式·组合模式
星星火柴9369 小时前
关于“双指针法“的总结
数据结构·c++·笔记·学习·算法
艾莉丝努力练剑10 小时前
【洛谷刷题】用C语言和C++做一些入门题,练习洛谷IDE模式:分支机构(一)
c语言·开发语言·数据结构·c++·学习·算法
阿巴~阿巴~12 小时前
深入解析C++ STL链表(List)模拟实现
开发语言·c++·链表·stl·list
旺小仔.13 小时前
双指针和codetop复习
数据结构·c++·算法
jingfeng51413 小时前
C++ STL-string类底层实现
前端·c++·算法
郝学胜-神的一滴13 小时前
基于C++的词法分析器:使用正则表达式的实现
开发语言·c++·程序人生·正则表达式·stl
努力努力再努力wz15 小时前
【c++深入系列】:万字详解模版(下)
java·c++·redis
瓦特what?16 小时前
关于C++的#include的超超超详细讲解
java·开发语言·数据结构·c++·算法·信息可视化·数据挖掘
祁同伟.16 小时前
【C++】动态内存管理
开发语言·c++