STL學習筆記之通用工具

2021-05-31 23:38:10 字數 1396 閱讀 7235

class pair 可以將兩個值視為乙個單元。

c++標準程式庫中多處使用了這個

class

。容器類別

map和

multimap

就是使用該類來管理其鍵值

/實值的承兌元素的。任何函式需要兩個值,也需要

pair

。pair定義於

中,其被定義為乙個

struct

,而不是乙個類,故所有成員都為

public

。其資料成員為

first

和second

。pair之間的比較:如果兩個

pair

物件內的所有元素都相等,這兩個

pair

物件就被視為相等(

equal

)。其中第乙個元素的比較優先順序較高。

make_pair():

namespace std

auto_ptr是這樣一種指標,任何情況下,只要自己被銷毀,就一定連帶釋放其所指資源。

auto_ptr

要求乙個物件只能有乙個擁有者,嚴禁一物二主。

使用方法:

#include

void f()

注意:auto_ptr<>

不允許使用一般指標管用的賦值初始化方式,必須直接使用數值來完成初始化。

所有權轉移:當auto指標a

、b都使用同乙個物件進行初始化時,便會出現乙個問題:當

a銷毀之後,

a所指向的物件也被釋放了,那麼

b指向**?這是很危險的行為。所有權轉移便是為了解決這樣的問題。

//ptr1指向新生的物件

xstd::auto_ptrptr1(new classa);

//下面這句神奇的**之後,

ptr1

不再擁有對物件

x的控制權,它會指向

null

,當然會被銷毀,此時,物件

x的控制權轉移到了

ptr2(

要如此這般,需要注意的是只有

auto 

指標可用哪來當做另乙個

auto

指標的初值

)std::auto_ptrptr2(ptr1);

使用auto_ptr

的注意點:

1) auto_ptrs之間不能共享擁有權

2) 並不存在針對array

而設計的

auto_ptrs

3) auto_ptrs並不是萬能的智慧型指標

4)auto_ptrs不滿足

stl容器對元素的要求(因為在

copy

和assign

工作之後,原本的

auto_ptr

和新產生的

auto_ptr

並不相等)

初學C 之通用工具(一)

1.大部分通用工具都定義在標準標頭檔案 2.pair是儲存鍵值對的主要結構體。用make pair 生成pair型別,例如 std make pair 43,ss 等同於std pair 43,ss 在map和multimap中該函式體現的非常好。3.智慧型指標auto ptr在memory中宣告 ...

4 通用工具

std make pair 42,a 可代替std pair 42,a std auto ptrptr1 new classa ok std auto ptrptr2 new classa error,不允許賦值初始化 std auto ptrptr3 ptr1 ok,同時擁有權轉移 1 設計動機 ...

Vue 通用工具 彈窗

最近在寫vue的專案,有一些元件是通用的,就單獨拎出來寫了。彈窗元件 檔案層級 1 tools 1.1 popup.vue 1.2 inded.js popup.vue test v if show class flag fade in fade out class class div div te...