C++模板编程->嵌套实现元组

来源:互联网 发布:阿基拉和拼字比赛 知乎 编辑:程序博客网 时间:2024/05/29 18:08


/*  通过嵌套元组 */#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就被复制一次。当所存元素数据类型比较复杂时,无疑这种重复复制对程序性能的影响不可忽视。

0 0
原创粉丝点击