關於C C 的各種優化

2021-10-08 11:57:06 字數 1416 閱讀 5599

一.常量

宣告常量可以方便**的修改,提高復用性.

const

int maxn=

10000

;const

int n=

10000+10

;const

double exp=

1e-6

;

同時,宣告常量也可以減少重複運算,提高**速度,例子如下:

string s;

cin>>s;

for(

int i=

0;i) s[i]

='a'

;

view code

上述**中,可以利用常量儲存s的長度,減少重複計算量.

string s;

cin>>s;

const

int len=s.

length()

;for

(int i=

0;i) s[i]

='a'

;

register int i=0;

頻繁使用的變數可以使用這種方法宣告,常用於for()函式內.

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

機器會盡可能多地將這種變數放入cpu中的暫存器內,而不是記憶體裡,從而提高效率.但要注意:暫存器變數不能使用指標.

三.編譯優化(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

這樣就可以代替下面的一大堆頭檔案了.

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

//

但是並不是所有oi競賽都支援使用,所以還是不太推薦在競賽上使用.

關於C C 的各種常見讀取資料操作

例1 題目描述 將乙個字串str的內容顛倒過來,並輸出。str的長度不超過100個字元。輸入輸入包括一行。第一行輸入的字串。輸出輸出轉換好的逆序字串。樣例輸入 i am a student 樣例輸出 tneduts a ma i 用scanf讀取一行帶空格字串 include includeint ...

c c 各種排序

一 各種排序方法的時間 空間複雜度情況 1 直接插入排序 比較次數 最少n 1次 最多 n 1 n 2 2 移動次數 最少0 最多 n 1 n 4 2 使用乙個輔助儲存空間,是穩定的排序 2 折半插入排序 比較次數 最少與最多同,都是n log2n 其中2為底,下邊表示同 移動次數 最少0,最多時間...

C C 實現的各種排序

直插排序 void insertsort vector int arr else break 氣泡排序 void bubblesort1 vector int arr if flag return void bubblesort2 vector int arr if flag return 快速排序...