C++模板程式設計->巢狀實現元組
阿新 • • 發佈:2019-01-10
這就是簡單而沒有額外儲存開銷的元組實現方法之一。但這種方法也有其不足,就是在構造元組時存在元素的重複複製問題。例如上例中元組的第四個元素字元'a',在巢狀呼叫push函式模板構造元組時,每呼叫一次push就被複制一次。當所存元素資料型別比較複雜時,無疑這種重複複製對程式效能的影響不可忽視。/* 通過巢狀元組 */ #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; }