日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

《STL源码剖析》学习-- 1.9-- 可能令你困惑的C++语法2

發布時間:2025/3/21 c/c++ 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 《STL源码剖析》学习-- 1.9-- 可能令你困惑的C++语法2 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

上一篇請見可能令你困惑的C++語法1

現在繼續,

2.臨時對象的產生和運用

臨時對象,是一種無名對象。制造臨時對象的方法是,在型別之后加一對小括號,并可以給定初值,這樣就會調用響應的constructor。在stl中,往往與仿函數一起使用,這樣為了使程序看起來干凈。

template <typename T> class print{ public:void operator(){const T& elem){cout << elem << ' ';} };int main(){int ia[6] = {0,1,2,3,4,5};vector<int> iv(ia,ia+6);for_each(iv.begin().iv.end(),print<int>()); }

3.靜態成員初始化問題

靜態非const成員初始化,是在類定義內聲明,類外定義時設定初值初始化;

靜態const成員初始化,在類定義內直接初始化。

4.自增自減的前置與后置

C++中使用++和--,根據出現在對象的前面或者后面來進行調用。其實是根據函數重載來實現的,當編譯器看到++a時,就調用operator++(a),當看到a++時,就調用operator(a,int)。這里編譯器為int傳遞一個啞元常量值(因為此值永遠也不會被使用),用來給后綴產生不同的標記。

使用示例如下,這是在類T中的代碼:

//prefix: increment and then fetch T& operate++(){++(this->i);// 成員變量遞增,不同T有不同表現return *this; } //postfix: fetch and then increment const T operator++(int){T temp = *this;++(*this);return temp; }

5.stl中區間表示[ )

區間采用前閉后開的表示方法。[first,last),包含的元素范圍為[first,last-1)。

6.仿函數

仿函數就是類似函數的結構體或者類。要把某類當做仿函數使用,類必須進行operator()重載,這是就可以像使用函數一樣使用。

這里也加入第7章的內容,記錄一下仿函數。

許多stl算法提供兩個版本,一個用于一般狀況,一個用于特殊狀況。在特殊狀況時,需要用戶指定某個條件或者策略,而條件或者策略的背后由一整組操作構成。

在stl中,這一整組操作就是指的仿函數。一般的函數,如果當做參數傳遞,只有通過函數指針,但是指針無法只有自己的狀態,更重要的一點是函數指針不能滿足stl對抽象性的要求,所以達不到stl組件的可適配性。

仿函數根據函數參數可以分別為一元仿函數(unary_function)和二元仿函數(binary_function),用戶自定義仿函數必須繼承其中的一個。

下面是一元仿函數的參數型別和返回值類型,二元仿函數類似。

template <class Arg, class Result> struct unary_function{typedef Arg argument_type;typedef Result result_type; }

根據功能分為算術類(Arithmetic)仿函數、關系運算類(Rational)仿函數和邏輯運算類(Logical)仿函數,這些仿函數也都繼承自一元或者二元仿函數。

這里要清楚幾個概念,

證同元素,所謂“運算op的證同元素”,即數值與某個元素做op運算,會得到自己,則該元素則為該運算符的證同元素。

證同函數,任何數值通過此函數后,都不會有任何改變。

選擇函數,接受一個pair,傳回第一個或者第二個值。

投射函數,傳回一個參數,忽略另外一個。






總結

以上是生活随笔為你收集整理的《STL源码剖析》学习-- 1.9-- 可能令你困惑的C++语法2的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。