stl 原始碼剖析
苞丁解牛,恢恢乎游刃有餘
第一章 stl概論與版本簡介
1.9.2 臨時物件的產生與應用
1、刻意產生臨時物件:在型別名稱後直接加一對小括號,並指定初值,如 shape(3,5)或 int(8);,呼叫相應的constructor且不指定物件的名稱。及建立匿名臨時物件。在stl中此技巧常用於仿函式與演算法的搭配上。
2、靜態常數整數(static const int )成員在classs內部的直接初始化: class內的const static integer data member,可直接在類內給予初值。注意整型泛指int /char/long等。
3、increment/decrement/derefrence運運算元——迭代器的內部實現
1>
為區別前置和後置運算子,需要在後置運算子過載函式中加引數
「int」
,雖然這個型別在此除了以示區別之外並不代表任何實際含義;
2>
前置返回的是變數的引用,後置返回的是常量。所以
++++c
合法,而
c++++
不合法,這一點可以在
vc 6.0
和dev c++
中採用基本資料型別的
++操作來驗證;
3>
為什麼不讓
c++++
也合法呢?如果要實現
c++++
合法,必須使後置返回變數或變數的引用。
c++是先返回c值再
+1,所以不可能返回
c,那就只能先建立區域性變數來儲存
c的初值,然後再返回區域性變數(區域性變數不允許返回引用),但返回了區域性變數之後,如果再連著進行下一次
++運算,參與運算的就是這個區域性變數的值了,所以此時
c++++
其實等效與
c++,也就沒有存在的意義了。
一 STL概論與版本簡介
stl提供六大元件 容器containers 演算法algorithms 迭代器iterators 仿函式functors 配接器adapters 配置器allocators 只在函式內部使用的函式可以用 advance 表示,前面加 符號,特定的前導符 list不能使用stl演算法sort 必須使...
1 STL概論與版本簡介
c 標準規範下的c標頭檔案 無副檔名 如cstdio,cstdlib等 c 標準程式庫中不屬於stl範疇者,如stream,string stl標準標頭檔案 無副檔名 如vector,deque,list等 c 標準定案前,hp標準規範的stl標頭檔案,如vector.h,deque.h等 sgi ...
STL原始碼剖析 第一章 概論與版本介紹
stl六大元件 容器 containers 各種資料結構,如vector,list,deque,set,map,用來存放資料。從實現角度來看stl容器是一種class template。演算法 algorithms 各種常用的演算法如sort,search,copy,erase 從實現角度來看stl...