[討論] 如何從C轉到C++

看板C_and_CPP作者 (hi~)時間11年前 (2014/03/20 22:03), 編輯推噓14(14034)
留言48則, 22人參與, 最新討論串1/2 (看更多)
最近在練習打UVA的題目 我大部分都用C做 雖然有時候要自己弄資料結構 不過大致上覺得打得蠻順的 前幾天閒來無事看看統計數據 發現我非常多人都用C++打 而且速度快地也有大半是C++的code 讓我也想來試試看C++ 我強迫我用C++打了一次 雖然有做出來,不過其實我也只是把stdio改成iostream 然後裡面用cin cout 沒有用什麼別的library,整份code看起來和C根本一樣 我其實C、C++、JAVA都會打 物件導向觀念應該也蠻清楚的 不過我覺得UVA的題目似乎不用動用物件導向來解 而且我覺得我不熟C++的library 用起來就沒有如虎添翼的感覺 請問我應該要怎麼做 才可以強迫我打的code比較像c++的風格? 是去搞清楚C++常用的library嗎? 還有什麼其他要注意的嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.133.86.2

03/20 22:07, , 1F
做做看大一點的專案吧
03/20 22:07, 1F

03/20 22:08, , 2F
這種一兩個feature的競賽題目用OOP有點疊床架屋
03/20 22:08, 2F

03/20 22:18, , 3F
我作過一題運算很少的題目,把 iostream 改成 stdio
03/20 22:18, 3F

03/20 22:19, , 4F
速度從 126->42ms,從此我就不太喜歡用 iostream 了
03/20 22:19, 4F

03/20 22:26, , 5F
換寫java比較快 不想物件導向都不行
03/20 22:26, 5F

03/20 22:28, , 6F
做一些好玩的東西?譬如java就做個Android app之類
03/20 22:28, 6F

03/20 22:28, , 7F
整個架構會強迫使用物件導向XD
03/20 22:28, 7F

03/20 22:29, , 8F
之前好像有人測過,cout的效能其實是endl所影響的?
03/20 22:29, 8F
大家好像誤會我的意思了 我是想問說,如何用C++的方式來寫UVA上面的問題 因為好像很多人這樣用 去比賽的高手似乎也都用C++ @@ 我有用寫過android的APP,所以不是想要特別練物件導向 是想要知道為何高手都用C++ 還有要如何用C++才可以變高手XD ※ 編輯: friendever 來自: 220.133.86.2 (03/20 22:32)

03/20 22:35, , 9F
該怎麼說...標準競賽選手思維(?
03/20 22:35, 9F

03/20 22:39, , 10F
"高手都用C++" vs "文青都用macbook"
03/20 22:39, 10F

03/20 22:41, , 11F
上傳是C++ 搞不好內容都還是C..
03/20 22:41, 11F

03/20 22:46, , 12F
可以串一下stderr
03/20 22:46, 12F

03/20 22:47, , 13F
endl之所以慢是因為fflush
03/20 22:47, 13F

03/20 22:52, , 14F
用c++不代表用OOP 很多高手用c++可能只代表很多人用c++
03/20 22:52, 14F

03/20 22:58, , 15F
c++可是說是4+1種語言的混合
03/20 22:58, 15F

03/20 22:58, , 16F
你用過STL的map, priority queue等等嗎?
03/20 22:58, 16F

03/20 22:59, , 17F
OO C++只是其中一種
03/20 22:59, 17F

03/20 22:59, , 18F
如果只是把stdio換成iostream, 那C/C++對你來說是一樣的
03/20 22:59, 18F

03/20 23:00, , 19F
也有另一種可能就是你所有資料結構都自己寫 (致敬)
03/20 23:00, 19F

03/20 23:01, , 20F
用過STL就不會把C++當成純OO語言了
03/20 23:01, 20F

03/20 23:04, , 21F
C轉C++,第一個要做的是比較語法相同時的差異
03/20 23:04, 21F

03/20 23:12, , 22F
比賽要在短時間內寫出來吧 所以STL的container很常用到
03/20 23:12, 22F

03/20 23:31, , 23F
iostream 超級慢, AC 的改 cout 就變 TLE
03/20 23:31, 23F

03/21 13:12, , 24F
不熟 STL 就沒必要用 C++
03/21 13:12, 24F

03/21 13:13, , 25F
拿掉 STL 的 C++ 對寫競賽沒什麼幫助
03/21 13:13, 25F

03/21 14:43, , 26F
map超重要 XD
03/21 14:43, 26F

03/21 17:35, , 27F
c 風格也是 c++ 的一種風格, 你用的就是 c++ 風格了
03/21 17:35, 27F

03/21 18:38, , 28F
之前有人看到我用C++寫出程序導向被罵說是學得不倫不類
03/21 18:38, 28F

03/21 18:39, , 29F
到底是多少人認為用C++非得跟OOP畫上等號...
03/21 18:39, 29F

03/21 18:40, , 30F
一方面我討厭透過寫解題來學程式也是這種原因
03/21 18:40, 30F

03/21 18:41, , 31F
去看看OGRE那類的東西吧?或許自己會有些想法
03/21 18:41, 31F

03/21 18:42, , 32F
而且並不會因為風格變了,速度翻倍吧...
03/21 18:42, 32F

03/21 18:44, , 33F
再說,如果想要成為C++方面的高手,這比賽絕對不是關鍵
03/21 18:44, 33F

03/21 19:11, , 34F
樓上他如果看到以前我們的Java程式大概就吐血死亡了 |D
03/21 19:11, 34F

03/21 19:39, , 35F
C++可以分成C/OO C++/generic C++/metaprogramming/asm
03/21 19:39, 35F

03/21 19:41, , 36F
asm本身語法不在規範內,不過因為有asm關鍵字
03/21 19:41, 36F

03/21 19:41, , 37F
所以列一下,個人的喜好
03/21 19:41, 37F

03/21 20:28, , 38F
C++/clr
03/21 20:28, 38F

03/22 01:19, , 39F
只考慮解 UVA Online Judge 那類 problem-solving 問題的話
03/22 01:19, 39F

03/22 01:19, , 40F
你應該試著學 STL container/algorithm 看看是不是你要的
03/22 01:19, 40F

03/22 01:46, , 41F
順便找一下跟這些概念有關的題目來做做看
03/22 01:46, 41F

03/23 17:11, , 42F
C++ = RAII + TMP
03/23 17:11, 42F

03/23 20:42, , 43F
metaprogramming還有macro跟constexpr
03/23 20:42, 43F

03/24 00:59, , 44F
C++就跟前幾樓說的一樣有stl可以用,一些資料結構可以不用
03/24 00:59, 44F

03/24 00:59, , 45F
自己刻 uva用cin cout很慢…繼續用scanf printf就好
03/24 00:59, 45F

03/25 20:37, , 46F
競賽題應該沒人在跟你OOP的,所以C++真的只有差在STL..
03/25 20:37, 46F

03/29 01:32, , 47F
不要用acm的題目來練c++ 非常不適合
03/29 01:32, 47F

04/04 17:45, , 48F
至少不要用C89
04/04 17:45, 48F
文章代碼(AID): #1JAlKoxz (C_and_CPP)
文章代碼(AID): #1JAlKoxz (C_and_CPP)