C 加速輸入的幾種方法

2021-10-07 05:19:33 字數 1344 閱讀 8663

c++中,cincout的速度其實不並不慢,c++中的流的io速度相當的快,其速度與初始設定的快取區大小和硬碟的io速度有關。

但在c++中,為了相容c的io(scanfprintf),cincout被設定為與c的io同步,這樣導致cincout的速度不如scanfprintf快。

另外,在預設情況下,標準輸入裝置(cin)與標準輸出裝置(cout)繫結在一起,它保證在呼叫輸入之前已經重新整理輸出緩衝區,這樣也會降低讀取效率。

所以,我們可以手動取消他們與c語言io的同步,並去掉cincout的繫結,加速讀取,使cin的速度與scanf相差無幾,甚至某些情況要快於scanf

注:在取消繫結後,使用scanfprintf可能會出現問題,比如讀取失敗或者提前輸出的問題,請不要再使用他們,不過可以使用getchargets等讀入函式。

加速**:

// 取消c++ io與c的同步

std::ios::

sync_with_stdio

(false);

// 取消cin和cout的繫結

std::cin.

tie(

null);

/*等價於cin.tie(0);*/

在讀取大量整數時,無論是cin還是scanf,都比getchar的讀取效率要慢上不少,我們可以使用getchar來模擬輸入函式,在讀取大量整數的時候效率會很高:

下面給出其中的一種實現方法:

inline

void

read

(int

& x)

將其放在solution類的上方即可,一般情況用不到。

static

auto __=

()()

;//注意放在solution上面

加速Linux程式編譯的幾種方法

專案越來越大,每次需要重新編譯整個專案都是一件很浪費時間的事情。research了一下,找到以下可以幫助提高速度的方法,總結一下。有人說在windows下用了ramdisk把乙個專案編譯時間從4.5小時減少到了5分鐘,也許這個數字是有點誇張了,不過粗想想,把檔案放到記憶體上做編譯應該是比在磁碟上快多...

c 的幾種輸入方法

c 中幾個輸入函式的用法和區別 cin cin.get cin.getline getline gets getchar 1 cin 1 cin.get 2 cin.getline 3 getline 4 gets 5 getchar 1 cin 用法1 最基本,也是最常用的用法,輸入乙個數字 in...

C 中輸入字串的幾種方法

c 中幾個輸入函式的用法和區別 cin cin.get cin.getline getline gets getchar 1 cin 1 cin.get 2 cin.getline 3 getline 4 gets 5 getchar 1 cin 用法1 最基本,也是最常用的用法,輸入乙個數字 in...