1. .#pragma gcc optimize(2)
#pragma gcc optimize(2)
//或者(o1、o3類似)
#pragma gcc optimize(「o2」)
2. #include
#include
3. #define inf 0x3f3f3f3f
#define inf 0x3f3f3f3f
4. ios::sync_with_stdio(false);
ios::
sync_with_stdio
(false
);
cin,cout要先把要輸出的東西存入緩衝區,再輸出,導致效率降低,這段語句可以來打消iostream的輸入 輸出快取,可以節省許多時間,使效率與scanf與printf相差無幾。
5. cin.tie(0); 或者cin.tie(null);
cin.
tie(0)
;//或者
cin.
tie(
null
);
6. 簡化的for迴圈
#define rep(i,a,b) for(register int i=(a);i<(b);++i)
#define ret(i,a,b) for(register int i=(a);i<=(b);++i)
簡化的for迴圈,懶人寫法,個人不推薦(不太好看、但是編寫快)。
ps: register關鍵字請求讓編譯器將變數a直接放入暫存器裡面,以提高讀取速度,在c語言中register關鍵字修飾的變數不可以被取位址,但是c++可以用 & 操作符取位址,一旦使用了取位址操作符,被定義的變數會強制存放在記憶體中。。c++中雖然支援register關鍵字,但是c++編譯器也有自己的優化方式,即某些變數不用register關鍵字進行修飾,編譯器也會將多次連續使用的變數優化放入暫存器中,如果自己指定了register變數,但是編譯內器如果發現不合理,也會自動的取消程式設計師指定的register變數。
7. 整數/浮點快速讀入
inline
intread
(void
)while
(c>=
'0'&&c<=
'9')
x=(x<<3)
+(x<<1)
+(c^48)
,c=getchar()
;return x*f;
}
8. 快速列印
template
<
class
t>
inline
void
print
(t x)
-----------------------------------分割線-----------------------------------------
以上內容來自某大佬的乙個**片段,我只是將其查詢,探尋一下作用,加深對其理解。
**片段
#pragma gcc optimize(2)
//開o2優化
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
//#include
//#include
//#include
//priority_queuea;
//priority_queue,greater> b;
#define inf 0x3f3f3f3f
//memset(num,0x3f,sizeof(num));
#define bug(x) printf("[%d]\n",(x));
//#define pause system("pause");
#define me(x,y) memset(x,y,sizeof(x));
#define eps 0.0000000001
#define pi 3.1415926535897932385
//cout<#define ee 2.7182818284590452354
//printf("%.20lf",exp(1));
#define rr 0.57721566490153286060651209
//尤拉常數
#define it iterator
#define rint register int
#define rep(i,a,b) for(register int i=(a);i<(b);++i)
#define ret(i,a,b) for(register int i=(a);i<=(b);++i)
#define mp make_pair
#define pb push_back
#define fi first
#define se second
#define all(x) (x).begin(),(x).end()
#define sz(x) (int) (x).size()
typedef
long
long ll;
using
namespace std;
//inline int min(int a,int b)
inline
intread
(void
)while
(c>=
'0'&&c<=
'9')
x=(x<<3)
+(x<<1)
+(c^48)
,c=getchar()
;return x*f;
}template
<
class
t>
inline
void
print
(t x)
//int dx=;
//int dy=;
intmain()
C 一些技巧
一如果函式對傳入的指標引數進行修改,一定要把引數設定為指標的指標或者指標的引用 delete the first occurrence of the node which value equals item in a single linked list void delete node head,...
C語言演算法題的一些技巧
1.floor函式為向下取整函式。floor x 可以返回x的整數部分。如果想實現四捨五入的效果,可以用floor x 0.5 2.的表示方法。const double pi 4.0 atan 1.0 atan為反正切函式。3.想要獲取程式的執行時間,可以用clock 函式,除以clocks per...
在 Docker 中使用 mysql 的一些技巧
今天我寫一點在 docker 容器中使用 mysql 的 tips.要不要在生產環境使用 docker 執行資料庫這麼深奧的問題,等我踩足夠的坑再來寫吧。但是至少在開發和測試環境你可以用 docker 管理資料庫啊。先貼乙個我常用的 docker compose 片段,後邊進行詳細的解釋。這是日常使...