一 STL概論與版本簡介

2021-06-25 13:42:41 字數 967 閱讀 8143

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...