class template std::tuple is a fixed-size collection of heterogeneous values. it is a generalization of std::pair.
可以用來在bind中儲存函式指標和引數
不定引數模板 + 模板偏特化tuple作為乙個儲存不定引數模板的類,分為一下幾種偏特化形式:
template<>
struct tuple<> {};
template
struct tuple: public tuple
template
struct tuple: public nulltuple
可以注意到每個模板struct tuple: public tuple作為其上一級模板的子類來展開,這樣在獲取tuple_at時從前向後維護乙個當前元素的下標計數來訪問元素
templatestruct tuple;
template<>
struct tuple<> {};
typedef tuple<> nulltuple;
templatestruct tuple: public tuple
tuple(t&& v, args&&... tails) :base_type(std::move(tails)...), value(std::forward(v)) {}
tuple(t&& v, args&... tails) :base_type(std::move(tails)...), value(std::forward(v)) {}
tuple(t& v, args&&... tails) :base_type(std::move(tails)...), value(std::forward(v)) {}
t& getval()
t value;
}; templatestruct tuple: public nulltuple
t& getval()
t value;
}; templatestruct tuple_at;
templatestruct tuple_at>
; templatestruct tuple_at<0, tuple>
; templatestruct tuple_at<0, tuple>
; template<>
struct tuple_at<0,tuple<>>
; templatetypename tuple_at>::value_type& tuple_get(tuple& t)
從零開始寫STL 容器 vector
vector又稱為動態陣列,那麼動態體現在 vector和一般的陣列又有什麼區別?vector中各個函式的實現原理是怎樣的,我們怎樣使用會更高效?在容器類的最前面我們會看到許多的typedef 常見的如下 public typedef t value type typedef value type ...
從零開始寫STL 二叉搜尋樹
二叉查詢樹 binary search tree 又 二叉搜尋樹,二叉排序樹 它或者是一棵空樹,或者是具有下列性質的二叉樹 若它的左子樹不空,則左子樹上所有結點的值均小於它的根結點的值 若它的右子樹不空,則右子樹上所有結點的值均大於它的根結點的值 它的左 右子樹也分別為二叉排序樹。平均情況下插入查詢...
如何從零開始寫shell指令碼
如何從零開始寫shell指令碼 一 前言 為什麼我們需要使用shell 指令碼?難道我們之前學習的c c 不能夠完成shell指令碼語言的功能嗎,為什麼我們還需要學習shell指令碼?學習shell指令碼最大的好處是能夠輕易處理檔案與目錄之類的物件,如果同樣此類任務,利用c 或者c,則編寫程式很麻煩...