1. 程式人生 > >C++模板程式設計->巢狀實現元組

C++模板程式設計->巢狀實現元組

/*  通過巢狀元組 */
#include <iostream>
#include <string>
using namespace std;

template <typename T,typename N >   //構建元組的類模板
struct tuple
{
	T value ;
	N next;
	tuple(T const &v ,N const &n ):value(v),next(n){}
};

template<typename T,typename N>    //構建向元組增加函式的函式模板
tuple<T,N>push(T const &v,N const &n)
{
	return tuple<T,N>(v,n);
}

int  main(int argc, char const *argv[])
{
	//用typedef構造元組型別
	typedef tuple<int,char>tuple2;
	typedef tuple<float,tuple2>tuple3;
	typedef tuple<string,tuple3>tuple4;
	//構造4元素的元組
	tuple4 tup4=push(string("welcom"),push(.1f,push(1,'a')));
	//訪問元組任意元素
	cout<<tup4.value<<endl<<tup4.next.value<<endl<<tup4.next.next.value<<endl<<tup4.next.next.next<<endl;
	system("pause");
	return 0;
}
這就是簡單而沒有額外儲存開銷的元組實現方法之一。但這種方法也有其不足,就是在構造元組時存在元素的重複複製問題。例如上例中元組的第四個元素字元'a',在巢狀呼叫push函式模板構造元組時,每呼叫一次push就被複制一次。當所存元素資料型別比較複雜時,無疑這種重複複製對程式效能的影響不可忽視。