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