C++的cin和cout取消同步
雖然C++有cin函式,但看別人的程式,大多數人都用C的scanf來讀入,其實是為了加快讀寫速度,難道C++還不如C嗎!?
其實cin效率之所以低,不是比C低階,是因為先把要輸出的東西存入緩衝區,再輸出,導致效率降低,而且是C++為了相容C而採取的保守措施。
在ACM裡,經常出現數據集超大造成 cin TLE的情況。這時候大部分人(包括原來我也是)認為這是cin的效率不及scanf的錯,甚至還上升到C語言和C++語言的執行效率層面的無聊爭論。其實像上文所說,這只是C++為了相容而採取的保守措施。我們可以在IO之前將stdio解除繫結,這樣做了之後要注意不要同時混用cout和printf之類。
在預設的情況下cin繫結的是cout,每次執行 << 操作符的時候都要呼叫flush,這樣會增加IO負擔。可以通過tie(0)(0表示NULL)來解除cin與cout的繫結,進一步加快執行效率。
#include <iostream>
int main()
{
std::ios::sync_with_stdio(false);
std::cin.tie(0);
// IO
}
相關推薦
C++的cin和cout取消同步
雖然C++有cin函式,但看別人的程式,大多數人都用C的scanf來讀入,其實是為了加快讀寫速度,難道C++還不如C嗎!? 其實cin效率之所以低,不是比C低階,是因為先把要輸出的東西存入緩衝區,再輸出,導致效率降低,而且是C++為了相容C而採取的保守措施。 在ACM裡,經常出現數據集超
c++中cin和cout的用法
AR oat size spa span 用法 cout font 標準 cin和cout是c++中的標準輸入輸出流。中 一、cin cin的一般用法: cin>>變量a>>變量b>>變量c; cin會自動辨別變量的類型,如a可以
C++快速入門---cin和cout輸入的一些方法(2)
C++快速入門---cin輸入的一些方法(2) 注意: cin.ignore():忽略前7個字元 cin.getline():接收一個字串 cin.get():獲取一個字元 cin.peek():提取一個字元,不會改變輸入流裡面的資料 cin.gcount(
C++中cin和cout中不會被注意的細節(字串的處理)
cout.put(ch); 與cout << ch;類似。但是隻可以輸出單個字元。 cin cin使用空白(空格,製表符和換行符)來確定字串的結束位置。 例子: #include <
什麽時候,可以關閉cin和stdin的同步
left pri code pac scanf 同時 space stdin 無法 一些情況下,我們為了保證cin的讀取輸出速度,會選擇在代碼開頭添加這樣一句代碼 std::ios::sync_with_stdio(false); 它的功能就是關閉cin和stdin
順序表應用4-2:元素位置互換之逆置演算法(資料改進)(因為此題對時間限制要求高,所以用cin和cout會導致TLE)
順序表應用4-2:元素位置互換之逆置演算法(資料改進) Time Limit: 80 ms Memory Limit: 600 KiB Problem Description 一個長度為len(1<=len<=1000000)的順序表,資料元素的型別為整
如何重定向cin和cout?
#include <iostream> #include <fstream> #include <string> using namespace std; int main() { ofstream out("out.txt"); ifstream in("in.
cin和cout返回值問題
cin和cout返回值問題 ---雨竹清風 今天看了段程式碼感覺怪怪的。 string value; while(cin>>value) { cout<<value<<endl; } 哪不對吶?while迴圈條件,while迴圈判斷條件還能是非boo
PowerDesigner name和code取消同步
PowerDesigner中,但修改了某個欄位的name,其code也跟著修改,這個問題很討厭,因為一般來說,name是中文的,code是欄位名。 解決方法如下: 1、選擇Tools->GeneralOptions…選單,出現General Optio
cin和cout的簡單實用
從C到C++ 大二開始了,大一學的C,大二開始了C++的課程,首先C語言是結構化和模組化的語言,它是面向過程的,而C++是面向物件的,這就大大的加強了程式設計師對程式的可利用性和可
CIN和COUT原理和常用用法
1. 原理: #include <iostream> 其中,i/o表示輸入輸出,stream表示流。 cin表示輸入流,其操作符 >> 意思為提取,其操作過程為【鍵盤->"hello"->cin輸入流->
c++ premier Plus書--C++列舉和switch, cin/cout讀/寫檔案
C++中switch和列舉結合使用: #include "iostream" using namespace std; // 建立一個列舉型別常量, 實際對應的是0~2 enum {red, orange, yellow}; int main() { cout << "Ente
C++中cout、cin和endl的用法
轉自:http://blog.163.com/ac_victory/blog/static/1033187262008112222553105/ 對以上三篇文章,我添加了自己已有的部分知識,並重新地彙總整理 輸入和輸出並不是C++語言中的正式組成成分。C和C++
[黑科技]市面上不太常見的cin掛和cout掛
str fine n+1 register () sync ans 版本 stat CCPC賽後摸魚搞了個新的奇怪外掛 這裏貼上利用sgetn和sputn來實現的讀入讀出掛,理論上比fread更優 期望在賽中TLE的代碼能強行卡過去hhh 利用小規模的Codeforces
C++--輸入cin輸出cout小結
程式碼1: //向用戶提出一個"Y/N"問題 然後把使用者輸入的值賦給answer變數 //要求 針對使用者輸入"Y/y"或"N/n"進行過濾 //罰決程式可能存在的任何問題 想想為什麼 #include<iostream> int main(){ char answ
VS 2017 C++ 編譯器指出 cout(或 cin, endl) 是一個未知標誌符——解決辦法
在VS 2017 中編寫的 main() 函式,執行,編譯報錯,編譯器指出 cout(或 cin, endl) 是一個未知標誌符(如下圖所示)。 其原因是沒有 名稱空間編譯指令,即,最常見的語句: using namespace std; // using 編譯指令
c/c++ 字元和字串讀入小結(gechar cin getline gets)
文章來源:http://www.cnblogs.com/StoneXie/p/9603266.html c/c++ 字元和字串讀入小結(gechar cin getline gets) by slj getchar: 逐個字元讀入,可以讀入一切字元,包括空格符和回車符。這個函式很通用
Sublime Text3 C/C++一鍵除錯執行(可讀取cin和scanf且中文無亂碼)
寫在前面: 可以說對Sublime Text3是真愛了,我最愛的程式碼編輯器,沒有之一。CSDN上不少前輩都寫過如何在Sublime Text3中編譯除錯執行程式碼,根據他們的部落格,我成功設定好了Python在Sublime Text下的編譯執行,但是C/C++的我找到了十多篇部落格才設定成功
C++深度解析 初探C++標準庫 --- cin,cout,std(31)
C++深度解析 初探C++標準庫 --- cin,cout,std(31) 過載左移操作符 示例程式: #include <stdio.h> const char endl = '\n'; class Console
c++用cin和getline實現輸入回車結束輸入
今天做一道測試題遇到了一個麻煩,我想要先讀入一個字串,再讀入一個整數,迴圈往復,直到字串是空,也就是說回車鍵結束迴圈。 最開始的想法是: string s;int d; while(cin>>s){ cin>>d; // prece