常用技巧 輸入輸出優化 輸入輸出外掛程式

2021-09-26 19:13:55 字數 1518 閱讀 3282

我們知道cin、cout是比較慢的,不過它們可以加速。

在**中加入這兩句即可

std::ios::

sync_with_stdio

(false);

std::cin.

tie(0)

;

加速過後cin的速度與scanf的速度近似

當然,加速過後就不要混用print和cout,scanf和cin了。(因為不同步,後果會很嚴重)

cin慢是有原因的,其實預設的時候,cin與stdin總是保持同步的,也就是說這兩種方法可以混用,而不必擔心檔案指標混亂,同時cout和stdout也一樣,兩者混用不會輸出順序錯亂。正因為這個相容性的特性,導致cin有許多額外的開銷,如何禁用這個特性呢?只需乙個語句std::ios::sync_with_stdio(false);,這樣就可以取消cin於stdin的同步了。

輸入輸出外掛程式能夠減少程式輸入輸出的時間。

常用的printf,scanf都要比cin,cout快,但是,有時候用printf、scanf也會tle( 有的題目出題人會卡你讀取資料,輸出資料。讓你因為讀取資料,輸出資料而tle ),這時候我們就要用到外掛程式的輸入輸出方式了。

外掛程式輸入輸出對於大資料量能夠明顯減少時間,其實它的快主要是因為scanf和printf都是對緩衝區的讀寫操作,當程式執行的時候不會直接把要輸出的內容輸出到鍵盤上,或者說是從鍵盤讀入的資料不會直接讀到程式裡,而是先讀到乙個叫做緩衝區的東西裡面,這就大大降低了速度了。

而putchar和getchar因為一次只能輸出乙個字元,所以它可以直接輸出,所以它輸出的很快。外掛程式輸入輸出的程式其實就是將本來要讀取的內容拆成乙個乙個的字元進行讀取或者輸出。

這裡貼乙份kuangbin輸入輸出外掛程式的模板

**

//適用於正負整數

#include

using

namespace std;

typedef

long

long ll;

template

<

class

t>

inline

bool

scan_d

(t &ret)

inline

void

out(

int x)

intmain()

不會用這份kuangbin的模板。。。

貼乙份會用的模板,不過只能用來處理整數。

#include

//注: 此外掛程式只適合數字的輸入輸出

intscan_int()

void

out(

int n)

intmain()

out(n)

;return0;

}

部落格

部落格部落格

輸入輸出優化

最近遇到乙個題,照我的思路差100ms才能過,於是想盡一切辦法做微小優化試圖卡過去,最後雖然過去了,但要是會優化輸入就更好了,於是學習一下這個模板備用 以下模板,具體講解參考參考文章 include include void read int x 普通版 s getchar while s 0 s ...

輸入輸出優化

code1inline int read code2inline int read code1 include using namespace std void write int x if x 9 write x 10 putchar x 10 0 code2inline void write i...

c c 輸入輸出技巧

c 小數的四捨五入問題 小數用 xf 輸出的話 是會自動四捨五入的 比如說double e 2.718,c 3.141 printf 2lf n e printf 2lf n c printf 2lf n int e 100 100.0 printf 2lf n int c 100 100.0 執行...