# Part III: 函數對象與高級編程
> 以下四個庫可能會永遠改變你對C++編程的看法。雖然函數對象并不是什么新概念,特別是對于曾長 期使用和定制標準庫中的算法的人來說,但本書這部分中的幾個庫的討論將帶給函數對象全新級別的抽象。有一些領域曾經被認為是C++不適用的,在從事某些特 定設計時,如表面上看,在使用標準庫的算法時,不可避免地會產生很多小的函數對象。但千萬不要忘記,在C++中,最好不要只從語言本身來判定,它被設計為 可以通過庫來彌補本身的缺點;確實,庫 Boost.Bind 和 Boost.Lambda 正試圖解決前述問題。回調函數是另一個有問題的領域;問題的根本在把庫用于更高級別的編程時更為突出,因為存儲和延時調用類似于函數的對象成為了一個重要 的特性。這正是 Boost.Function 要做的,當然,它與這里提到的兩個庫(還有其它庫)都可以很好地配合。最后一章討論 Boost.Signals, 這是一個具體化 Observer 模式的庫。這些庫具有特別的力量,它們可以使程序員寫更少的代碼、更有表現力的語句,并確實縮短了表達式,使得代碼更易讀且更易于維護。這些能力同時也帶來了負擔,因為它也很可能寫出不能分析的表達式。對于多數程序員,熟悉這些庫將非常有用,我希望對你來說也是這樣。
- 序
- 前言
- Acknowledgments
- 關于作者
- 本書的組織結構
- Boost的介紹
- 字符串及文本處理
- 數 據結構, 容器, 迭代器, 和算法
- 函數對象及高級編程
- 泛 型編程與模板元編程
- 數學及數字處理
- 輸入/輸出
- 雜項
- Part I: 通用庫
- Library 1. Smart_ptr
- Smart_ptr庫如何改進你的程序?
- 何時我們需要智能指針?
- Smart_ptr如何適應標準庫?
- scoped_ptr
- scoped_array
- shared_ptr
- shared_array
- intrusive_ptr
- weak_ptr
- Smart_ptr總結
- Library 2. Conversion
- Conversion 庫如何改進你的程序?
- polymorphic_cast
- polymorphic_downcast
- numeric_cast
- lexical_cast
- Conversion 總結
- Library 3. Utility
- Utility 庫如何改進你的程序?
- BOOST_STATIC_ASSERT
- checked_delete
- noncopyable
- addressof
- enable_if
- Utility 總結
- Library 4. Operators
- Operators庫如何改進你的程序?
- Operators
- 用法
- Operators 總結
- Library 5. Regex
- Regex庫如何改進你的程序?
- Regex 如何適用于標準庫?
- Regex
- 用法
- Regex 總結
- Part II: 容器及數據結構
- Library 6. Any
- Any 庫如何改進你的程序?
- Any 如何適用于標準庫?
- Any
- 用法
- Any 總結
- Library 7. Variant
- Variant 庫如何改進你的程序?
- Variant 如何適用于標準庫?
- Variant
- 用法
- Variant 總結
- Library 8. Tuple
- Tuple 庫如何改進你的程序?
- Tuple 庫如何適用于標準庫?
- Tuple
- 用法
- Tuple 總結
- Part III: 函數對象與高級編程
- Library 9. Bind
- Bind 庫如何改進你的程序?
- Bind 如何適用于標準庫?
- Bind
- 用法
- Bind 總結
- Library 10. Lambda
- Lambda 庫如何改進你的程序?
- Lambda 如何適用于標準庫?
- Lambda
- 用法
- Lambda 總結
- Library 11. Function
- Function 庫如何改進你的程序?
- Function 如何適用于標準庫?
- Function
- 用 法
- Function 總結
- Library 12. Signals
- Signals 庫如何改進你的程序?
- Signals 如何適用于標準庫?
- Signals
- 用法
- Signals 總結