庫及其應用
(danny kalev發表於2004-12-27 16:11:06)
1、何為 tuple?
tuple 是乙個大小固定的異構物件集合。tuple 型別有很多有用的應用,比如封裝乙個函式的多個返回值以及模擬多個物件的同時賦值和比較。
tuple 的大小是指它所包含的元素的個數。目前的 tuple 庫支援 0-10 個元素的 tuple。每個元素可以是不同的型別。下面的例子建立乙個具有兩個元素(分別為 float 和 void *)和乙個匹配初始化例程的 tuple。
#include
tuple t(2.5, null);
如果忽略初始化例程,會使用預設的初始化過程:
tuple t; //initialized to (0.0, string())
2、輔助函式
tuple 庫包括幾個輔助函式,例如,make_tuple() 函式根據其引數例項化乙個tuple型別:
voidfunc(int n);
make_tuple(func); // returns: tuple < void (*)(int) >
make_tuple("test", 9); // tuple < const char (&)[5], int >
tuple_size() 函式返回乙個 tuple 的大小:
int n=tuple_size < tuple < int, string > >::value; // 2
tuple_element() 函式檢索單個元素的型別。這個函式接收乙個索引和 tuple 型別:
// get thefirst element's type, i.e., float
t=tuple_element < 0, tuple < float, int, char > >::type;
要訪問元素本身,請使用 get() 函式模板。模板引數(也就是尖括號中括起來的引數)是元素的索引,圓括號中的引數是tuple型別:
tuple tpl;
int n=get <0> (tpl); //read 1st element
get <1> (t)=9.5; //assign the 2nd element
3、應用
tuple 可以用來封裝乙個函式的多個返回值。例如:
typedeftuple < const char *, wchar_t* > mychar_t;
mychar_tmygetenv(const mychar_t &);
C 標準庫型別 bitset及其應用
bitset 物件用每乙個bit位儲存0或1,可以用來標記存在或者不存在,位置下標和儲存內容組成乙個key value對。用bit標記的好處就是可以節省記憶體空間,特別是應用於海量資料處理中。例如以下幾個問題 1 已知某個檔案內包含一些 號碼,每個號碼為8位數字,統計不同號碼的個數 2 2.5億個整...
Merkle Tree及其應用
merkle tree,是一種樹 資料結構中所說的樹 網上大都稱為merkle hash tree,這是因為 它所構造的merkle tree的所有節點都是hash值。merkle tree具有以下特點 1.它是一種樹,可以是二叉樹,也可以多叉樹,無論是幾叉樹,它都具有樹結構的所有特點 2.merk...
堆及其應用
對於堆的資料結構的介紹,在網上搜了下,具體講的不是很多。發現比較好的一篇介紹堆的部落格是在此感謝他。通過對上面那篇部落格的學習,然後自己也去翻了下 演算法導論 裡面關於堆排序 heapsort 的介紹。這樣就對堆有了更加深刻的認識,在此,我結合自己的一點點理解,主要還是基於上面那篇部落格的內容 主要...