簡體   English   中英

我如何開始使用boost

[英]how do i get started using boost

我在這里聽到很多關於提升的內容,我開始認為它對我的軟件開發有很大的幫助。 在我的特定情況下,並發和內存管理更是如此,因為我們在這方面遇到了很多錯誤。

我需要進行哪些關鍵語言功能才能有效地從使用提升和縮短學習曲線中獲益? 我已經看到函數對象是常用的,所以我可能需要對此進行改進。

另外,是否有任何教程和101資源​​我可以快速查看,以獲得使用boost的感覺和理解。

我意識到有很多提升優惠,我必須為正確的工作選擇合適的工具,但任何線索都會有所幫助。

有關

Boost擁有難以想象的數量的庫。 容易上手的是

  • 不可復制
  • 排列
  • circular_buffer
  • 的foreach
  • 運營商(我個人最喜歡的)之一
  • smart_ptr
  • 約會時間

更高級的包括

  • 拉姆達
  • 捆綁
  • 輸入輸出流
  • 系列化
  • 線程

習慣提升需要時間,但我向你保證它會讓你的生活更美好。 此外,查看增強庫的編碼方式將有助於您更好地進行c ++編碼,尤其是模板。

你提到在嘗試加強之前你應該怎么看。 我同意功能對象是一個很好的研究方法。 另外,請務必查看模板編程。 確保您知道的常見問題是何時對依賴類型使用typename限定符。 然而,在大多數情況下,這些庫都有很好的文檔記錄,包括示例和參考資料。

這里討論學習提升。 至於有用的語言功能? 他們全部。 如果您對C ++知之甚少,C ++是一種危險的語言。 RAII,仿函數/函數對象和模板可能涵蓋了最重要的方面。 Boost的設計與STL類似,因此了解您的標准庫至關重要。 Boost本身使用了大量的模板元編程,但作為庫用戶,你不會經常需要它(除非你開始使用Boost.MPL)

與內存管理相關的錯誤是一個很好的指標,它是C ++,而不是你需要提升的Boost。 安全處理內存的技術是眾所周知的,並不是特定於Boost的。 (除了Boost的智能指針之外)。 RAII可能是解決此類問題時最重要的概念。

我需要進行哪些關鍵語言功能才能有效地從使用提升和縮短學習曲線中獲益?

  • 模板
  • 函子
  • 例外
  • STL
    • 迭代器
    • 算法
    • 集裝箱

......等等。

是否有任何教程和101資源​​我可以快速查看,以獲得使用提升的感覺和理解。

Boost有很好的記錄。 這里開始。

有太多的圖書館迷路了。 我會先說一些簡單的,可能是智能指針或Boost.Test(單元測試框架) - 這將很快幫助您入門。 另外,試着想一下你用STL無法輕易解決的問題。 然后查找Boost文檔或在此處發布。

如果您對函數式編程感到滿意,請查看MPL / Lambda庫。

第一個IMO是智能指針 集成到新代碼中很簡單,對於現有代碼來說通常不是問題。 它們使內存管理變得簡單,並且可以用於許多其他資源。

C ++為您提供了管理自己內存的能力,智能指針可以讓您(大多數時候)在您不需要的時候為它提供支持。

第二個是 - 如你所提到的 - 函數對象,它們在C ++中填補了傳統上通過繼承解決的大差距,這在很多情況下是強耦合的。

我對這兩個之外的提升只有很少的經驗,但其余大部分是相當“情境化的” - 你可能需要也可能不需要它。 獲取有關庫概述 ,並了解您的需求。

boost::anyboost::variant是好的你需要一個變量數據類型,有兩種不同的方法。

boost::regex如果你需要一些文本解析。

boost::threadboost::filesystem幫助你編寫可移植的代碼。 如果您已經擁有良好的平台特定庫,則可能不需要它們 - 但它們在任何情況下都優於API或C ++級別。

也許你喜歡我的介紹,以提高智能指針 ,並為他們一個相當非正統的用途。

試試BjörnKarlsson的書: 超越C ++標准庫:Boost簡介 它非常簡單易懂。 在我完成Scott Meyers的三本c ++書籍(有效系列)后,我讀到了這本書。

在閱讀了超越C ++標准庫:Boost簡介之后 ,我建議隨便瀏覽boost.org上的文檔,只是為了了解可用的內容。 當它看起來非常適合特定的應用程序時,您可以深入了解特定的boost庫。

我認為shared_ptr應該是最容易開始的地方。 開始在簡單指針或auto_ptr數據類型的位置使用它。

您還可以查看weak_ptr。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM