在學習C++時將自己限制在STL庫中,然後在熟練使用vanilla C++之後解決boost和它的增加是否有意義?在學習BOOST替代品之前,我應該熟練掌握STL庫嗎?
還是應該在學習C++的時候直接進入BOOST?
在學習C++時將自己限制在STL庫中,然後在熟練使用vanilla C++之後解決boost和它的增加是否有意義?在學習BOOST替代品之前,我應該熟練掌握STL庫嗎?
還是應該在學習C++的時候直接進入BOOST?
STL有一些核心概念。 Boost構建並擴展它們。如果你瞭解它們,那麼直接轉到Boost可能對你有用。如果不是,我會從STL開始。
vector
,list
和deque
,和類似map
,set
及其multi*
和unordered_*
品種關聯)。有時你可以換另一個 - 有時你不能。瞭解他們的優點和侷限性。copy
與專用於const char *
的copy
不同)。bind1st
,ptr_fun
和mem_fun
):該語法可能會掩蓋其實用程序。string
- 當不使用它。 (所有字符串類都有權衡:學習標準教育的利弊是教育性的)。用於設計STL的原理是建立在Boost庫的基礎之上的,並且被Boost庫擴展。如果你得到它們,Boost是可管理的。如果你不這樣做,並且Boost最終難以遵循,你可以回到STL來獲得你的方位。如果你決定真的想把你自己的C++知識,並測試你是否真的知道你的想法,那麼它可以提供一個有趣的挑戰。已經使用了C++十幾年了,已經教會了其他人如何使用它,從那時起已經熟練掌握了更多的高級語言,Boost仍然讓我感到驚訝。它非常有用,但它不是微不足道的)。
這完全取決於您是否能夠在所有工作中使用Boost。我不懷疑會有會禁止使用它的工作場所(不過看起來很愚蠢)。
但是,如果你認爲你可以在任何地方使用它,那麼一定要集中精力。
如果有STL提供的功能但不提升,請專心學習STL的這些位。
首先和STL一起去,因爲那是大多數時候你會用到的東西。掌握所有的提升是非常困難的,檢查任何圖書館,不提供與c + +開箱即用。解析庫,圖庫
你不必爲了使用它而掌握所有的提升。 – 2009-02-14 10:53:10
我建議在查看Boost之前獲得STL的清晰句柄。 Boost旨在建立在STL之上,並且許多庫將最終成爲標準庫的一部分。 Boost庫通常不如STL成熟和標準化。另外,在我看來,許多boost庫過於頻繁,添加了本來不存在於C++中的「特性」(導致真正瘋狂的語法)。在很多情況下,有更多理智的C++習慣用於解決大多數編程問題,而無需使用這些神祕的Boost庫。
出於好奇 - 你能舉出一些更「理智」(便攜式)C++習語存在的「許多案例」嗎?我只使用了Boost庫的一個子集,但還沒有真正發現這種情況。 – Reunanen 2009-02-14 22:48:36
我會先學習STL。一旦你通過C++的基礎知識,學習如何使用STL的部分,然後如何工作將比解決Boost更好。 Boost庫傾向於推動C++的邊緣,特別是在高度模板化的函數的組合中。
我喜歡馬特奧斯汀的泛型編程和STL,你可以便宜地皮卡secondhand。
我認爲從一開始就可以直接使用它。 Boost提供了許多強大的功能,被廣泛使用,並擁有良好的聲譽。它提供的大部分功能都與STL設計的共同編程概念相同,所以在這個意義上它不應該讓人感到困惑。
學習東西的最佳方式是使用優秀的代碼,然後去看看它是如何寫的。這對Boost來說效果很好。閱讀模板教程,您從一小時內發現的新動力中受到啓發。然後閱讀你已經使用了一點的Boost標題,並且你會被激勵數週。
當然,不要期望立刻理解那些內部 - 起初我只是用庫而無需瞭解一下如何去建立任何的是,這很好。但是在某個時候,你意識到你想用類似的設計寫一些東西,然後你會去看。
如果你想做相反的事情,並限制自己使用「C++作爲一個更安全的C」,那麼你就不會接觸到所有這些強大的東西,所以你不會想要去看待和理解它們,所以你會寫出相當原始的代碼並學得更慢。
編輯:忘了我有另一個想法 - 看看即將到來的C++ 0x標準了。它融合了許多起源於Boost的功能。也就是說,誰開始學習C++的學生從現在開始幾年將這些概念從合作一開始 - 你不妨做,今天太...
通過編程學習和使用的工具最適合。如果你編程的東西需要大量的解析,那麼你可能會學到一些提升的精神,但是在你到達那裏之前,你還會學到關於std :: string和std :: fstream的東西。你寫的下一個應用程序可能需要std :: vectors和boost :: accumulators。
只要記住提升是巨大的,你會你甚至用它的四分之一(我個人不希望永遠使用或學習最刺激的,因爲我不需要之前良好的品質程序員方式它...)。
先學習STL。如果你從一開始就用Boost學習C++,那麼你將很難在未使用Boost的工作中(因爲許可原因等)很難。首先了解語言標準,然後如果您需要某些功能,則可以使用Boost進行擴展。
最終,你應該學習兩者。但是STL可以被孤立地學習,而boost直到你理解STL纔會有意義,因爲這是Boost所建立的,並且被設計用來擴展。所以學習使用STL作爲學習C++的一部分。然後你可以轉向Boost,這幾乎是「第二個標準庫」。
有確實的地方,禁止(或使其不可能使用)助推和其他開源庫。儘管源代碼可用,但一些商店(政府,咳嗽,咳嗽)認爲使用開源軟件存在安全風險。它真的很糟糕。 – 2009-02-14 18:02:29