程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> Item 54:熟悉一下標准庫,比如TR1

Item 54:熟悉一下標准庫,比如TR1

編輯:C++入門知識

Item 54:熟悉一下標准庫,比如TR1


Item 54: Familiarize yourself with the standard library, including TR1.

C++這個名字是在1983年由Rick Mascitti提出的,C++的曾用名還有”new C”, “C with Classes”。 1998年ISO/IEC 14882發布了第一個C++標准,就是我們常講的C++98。後續的標准還包括C++03,C++TR1,C++11,C++14。 值得一提的是C++11標准,它已經被主流編譯器支持。包含了核心語言的新機能,而且擴展C++標准程序庫,並入了大部分的C++ TR1程序庫。 Effective C++ Edition 3中大部分std::tr1都可以在std下直接訪問了。

我們來回顧一下C++98中的內容:

  • STL(standard template library),包括容器迭代器和算法。
  • IOstream,支持標准IO,用戶定義IO,以及預定義對象:cin,cout,cerr,clog
  • 國際化支持。如wchar_t為16位Unicode字符。
  • 數字處理。加入了complex,valarray等。
  • 異常成績。包括基類exception, 子類logic_error,runtime_error等。
  • C89的標准庫。1989年的C標准庫都並入了C++98。

    Effective C++ Edition 3中提到了很多TR1(technical report 1)的概念:

    • 智能指針:TR1::shared_ptr,TR1::weak_ptr,TR1::auto_ptr等,見Item 13。
    • TR1::function:可以代表一個可調用的實體,可以是函數、函數對象等,見Item 35。
    • TR1::bind:將某個函數綁定到某個對象上(即替換this),見Item35。
    • 哈希表:TR1::unordered_set,TR1::unordered_multiset,TR1::unordered_map,TR1::unordered_multimap
    • 正則表達式
    • 元組:在STL中本已有一個pair模板來包含兩個元素,在TR1中提出了不限元素數量的TR1::tuple
    • TR1::array:STL風格的數組。
    • TR1::mem_fn:提供了統一的方式來適配成員函數指針。
    • TR1::reference_wrapper:使得引用更像一個對象,原本在容器中只能存儲指針和對象的。
    • 隨機數:C++的rand來自於C89標准中,TR1給出了更好的隨機數算法。
    • 特殊數學函數:拉格朗日多項式、貝塞爾函數、橢圓積分等。
    • C99兼容的擴展:引入了很多C99的特性。
    • 類型特征(traits):一個類模板,用來在編譯期標識類型信息,見Item 47。
    • TR1::result_of:一個模板,用來推導函數調用的返回類型。

      Boost是一個值得我們去探索的社區,TR1中14個部分有10個是從Boost社區來的。Boost提供給的是一個模板庫,只需要指定INCLUDE PATH即可, 安裝Boost甚至不需要build。因為TR1裡的特性在Boost基本都有,你可以告訴你的編譯器把tr1當做boost

      namespace std{
          namespace tr1 = ::boost;
      }
      

      Item 25中提到,如果你在std下私自添加東西會導致未定義行為。但上述的代碼在實踐中通常沒什麼問題。

      總之,標准C++庫是由STL, iostream, 本地化,C99組成的。TR1添加了智能指針、通用函數指針、哈希容器、正則表達式以及其他10個組件。 TR1在是一個標准(standard),為了使用TR1你需要一個TR1的實現(implementation),Boost就是一個很好的TR1實現。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved