關於C/C++的各類優化

一.常量

聲明常量能夠方便代碼的修改,提升複用性.ios

const int maxn=10000;
const int N=10000+10;
const double exp=1e-6;

同時,聲明常量也能夠減小重複運算,提升代碼速度,例子以下:c++

string s;
cin>>s;
for(int i=0;i<len;i++)
    s[i]='a';
View Code

上述代碼中,能夠利用常量儲存s的長度,減小重複計算量.ide

string s;
cin>>s;
const int len=s.length();
for(int i=0;i<len;i++)
    s[i]='a';
View Code

二.寄存器變量

寄存器變量能夠經過register關鍵詞聲明,聲明方法(樣例)以下:函數

register int i=0;

頻繁使用的變量能夠使用這種方法聲明,經常使用於for()函數內.優化

for(register int i=0;i<999999;i++)

機器會盡量多地將這種變量放入CPU中的寄存器內,而不是內存裏,從而提升效率.但要注意:寄存器變量不能使用指針.spa

三.編譯優化(O1/O2/O3)

//O1優化
#pragma GCC optimize(1)
#pragma GCC optimize("O1")
//O2優化
#pragma GCC optimize(2)
#pragma GCC optimize("O2")
//O2優化
#pragma GCC optimize(3)
#pragma GCC optimize("O3")

四.萬能頭文件(OI競賽請慎用)

c++中的萬能頭文件包含了幾乎所有的c++頭文件,引用方法以下:指針

#include <bits/stdc++.h>

這樣就能夠代替下面的一大堆頭文件了.code

#include <iostream> 
#include <cstdio> 
#include <fstream> 
#include <algorithm> 
#include <cmath> 
#include <deque> 
#include <vector> 
#include <queue> 
#include <string> 
#include <cstring> 
#include <map> 
#include <stack> 
#include <set> 
//......

可是並非全部OI競賽都支持使用,因此仍是不太推薦在競賽上使用.blog

相關文章
相關標籤/搜索