實用工具類開發和維護會耗費程式設計師的時間。boost 通過提供幾個高質量的庫,從而簡化了此過程,您可以將這些庫輕鬆整合到現有的**庫中。本文簡單概述一些較流行的 boost 實用工具類,並幫助您了解如何將它們投入使用。實用工具類(utility classes)在幾乎任何適當規模的 c++ 專案中都是必需的,但是不存在滿足此需求的標準方法。通常,團隊根據他們的需求編寫實用工具類**,但是由於缺少重要的介面資訊,使得相同組織中的其他專案團隊無法重用那些類。建議的標準模板庫(standard template library,stl)只具有諸如
hash
、stack
和vector
等少數基本類,因此無法有效地用於取代遺留實用工具庫。
本文將介紹幾個 boost 實用工具類,包括tuple
、static_assert
、pool
、random
和program_options
。您需要對標準 stl 具備一定的了解才能充分理解本文的內容。本文中的所有**都已使用 boost 1.35 來進行了測試並使用 gcc-3.4.4 來進行了編譯。
boost::tuple 類
有時,您希望 c++ 函式返回多個不相關的值。在推出 stl 之前,實現此目的的方法是建立所有不相關變數的結構,並以指標或引用的形式返回它們或作為引數傳遞給函式——但是任一種方法都不是表達程式設計師意圖的方法。stl 引入了pair
,可將其用於聚合不相關的資料部分,但它一次只能處理兩個資料物件。為了使用int
、char
和float
的元組(tuple ),您可以按如下方式返回pair
:
make_pair> (3, make_pair('a', 0.9));
隨著您新增更多的元素,建立元組結構將變得越來越困難。boosttuple
型別派上了用場。要使用boost::tuple
,您必須包括標頭檔案 tuple.hpp。要執行元組比較和元組 i/o,您需要分別包括 tuple_comparison.hpp 和 tuple_io.hpp。
第乙個使用元組的程式
清單 1 使用int
、char
和float
的元組並列印內容。
清單 1. 建立 boost 元組並列印內容
#include
#include
#include
#include
using namespace boost;
int main ( )
此**的輸出為(2 a 0.9)
。請注意,<<
運算子過載std::ostream
,以便通過轉儲每個單獨的tuple
元素來輸出元組。
與元組相關的重要事實
在使用元組時,務必牢記以下事實:
本文**ibm developerworks中國
boost之實用工具
1.noncopyable用於禁止複製和拷貝的類繼承。宣告拷貝和賦值函式為私有,將執行時的錯誤轉化為編譯期的錯誤。include include using namespace std using namespace boost class mynoncopy private mynoncopy c...
boost庫實用工具之assign
list inserter operator,const t r 過載 operator 由於list inserter過載了操作符 和逗號,我們就可以讓 變得簡潔 使用assign庫時必須使用using指示符,這有這樣才能讓過載的 等操作符在作用域內生效 例如 void assign case1 ...
g utils 實用工具類
g.utils error function r hash getsearchandhash function win set function hash,win,isreload addlistener function win getquerystring function name,win,i...