查看: 2915|回復: 22
打印 上一主題 下一主題

[提問] c++語法and演算

[複製鏈接]
  • TA的每日心情
    慵懶
    2015-4-10 14:18
  • 簽到天數: 78 天

    [LV.6]常住居民II

    176

    主題

    612

    帖子

    3959

    積分

    管理員

    Rank: 9Rank: 9Rank: 9

    積分
    3959

    台南一中資訊社新手達陣程式設計達人 - 2014

    樓主
    發表於 2014-10-28 21:53:13 | 顯示全部樓層
    你問的問題滿有深度的

    A.1
    因為C++的Cin/Cout為了能相容C的IO函數(輸入/輸出函數),會採取一個叫與"同步"的動作,這個動作會執行一個flush,而flush是非常緩慢的函數,這也導致了cin/cout的速度遠慢於scanf/printf,但是這個動作是可以取消的!


    在程式的第一行加上這一句:
    [C++] 純文本查看 復制代碼
    ios::sync_with_stdio(false);


    就可以取消了。但是取消後,就不再保證scanf/cout混用時的輸出會是正確的,所以你就不能再用scanf輸出。
    此外還有一些的地方會執行flush,如 cout<<endl; 打比賽時請不要使用,尤其在非常大的輸出量時。因此我們採用cout<<'\n';來取代。另一個是在cin<<X的時候,為了在你輸入前能把所有資料顯示,也會使用flush,這裡可以用

    cin.tie(0);
    cin.tie(nullptr); //C++11
    來關閉這一個功能,如此一來,你的cin/cout就能大幅改善其執行效率了。

    A2.
    你先看看這篇資料
    http://www.csie.ntnu.edu.tw/~u91029/SequenceManipulation.html

    A3.A4
    等你學多一點再來討論吧,這需要很多前置的概念才能解釋
    我們社課的投影片
    http://forum.tfcis.org/thread-177-1-2.html

    排序是我們高一上社課內容,圖論/線段樹是下學期/暑假的課程

    點評

    http://zh.wikipedia.org/wiki/Nullptr  發表於 2014-10-31 23:14
    nullptr是什麼?  發表於 2014-10-29 20:25
    回復 支持 反對

    使用道具 檢舉

  • TA的每日心情
    慵懶
    2015-4-10 14:18
  • 簽到天數: 78 天

    [LV.6]常住居民II

    176

    主題

    612

    帖子

    3959

    積分

    管理員

    Rank: 9Rank: 9Rank: 9

    積分
    3959

    台南一中資訊社新手達陣程式設計達人 - 2014

    頭香
    發表於 2014-11-4 19:24:11 | 顯示全部樓層
    學弟都不回QQ

    還記得你打的
    [C++] 純文本查看 復制代碼
    using namespace std; 

    這行嗎?

    當初我們並沒有清楚解釋這一個東西。我們可以理解為:在這一行後的所使用的函數/物件都使用來自std這一個命名空間的版本。如果你沒有指明要用std的話,那你就要指明你所使用的來源,語法為

    name::Object

    也就是你問的
    [C++] 純文本查看 復制代碼
    std::cin


    回復 支持 反對

    使用道具 檢舉

    您需要登錄後才可以回帖 登入 | 加入我們

    本版積分規則

    快速回覆 返回頂部 返回列表