1. 程式人生 > >類模版實現增刪改查

類模版實現增刪改查

malloc urn 刪除 size 完成 let space sta color

#include<iostream> using namespace std; template <class T> class templa{ public: //初始化 templa(int n){ m=n; mystr=(T*)malloc(sizeof(T)*n+sizeof(T)); for (int i =0; i<n; i++) { cout<<"請輸入第"<<i<<"位要插入的元素:"<<endl; cin>>mystr[i]; } cout<<"-----------allen---初始化完成---請指示-----------"<<endl; } //打印 void dayin(){ for (int i = 0; i<m; i++) { cout<<mystr[i]<<endl; } cout<<"-----------allen---dayin完成---請指示-----------"<<endl; } //增加 bool add(T t,int n){ T * temp=(T *)malloc(sizeof(T)*n+sizeof(T)+sizeof(T)); for (int i =0; i<n; i++) { temp[i]=mystr[i]; } temp[n]=t; for (int i =n; i<m+1; i++) { temp[i+1]=mystr[i]; } delete[] mystr; mystr=temp; m++; cout<<"------------allen----add完成----請指示-----------"<<endl; return true; } //刪除 bool move(int n){ T * temp=(T *)malloc(sizeof(T)*n); for (int i =0; i<n; i++) { temp[i]=mystr[i]; } for (int i =n; i<m+1; i++) { temp[i-1]=mystr[i]; } delete[] mystr; mystr=temp; m--; cout<<"------------allen----move完成----請指示-----------"<<endl; return true; } //改 bool change(T t,int n){ mystr[n]=t; // cout<<mystr[n]<<endl; cout<<"-----------allen---move完成---請指示-------------"<<endl; return true; } //查 T cha(int n){ cout<<mystr[n]<<endl; return mystr[n]; cout<<"-----------allen---cha完成----請指示--------------"<<endl; } ~templa(){ if (mystr!=NULL) { delete [] mystr; } cout<<"-----------allen---~templa完成---請指示-----------"<<endl; } private: int m; T* mystr; }; int main() { int a; cout<<"請輸入要存的個數:"<<endl; cin>>a; // for (int i = 0; i<a; i++) { // <#statements#> // } templa<int> allen(a); allen.dayin(); allen.move(2); allen.dayin(); allen.cha(2); allen.add(3, 2); allen.dayin(); allen.change(3, 1); templa<double> allen2(a); allen2.dayin(); allen2.move(2); allen2.dayin(); allen2.cha(2); allen2.add(3, 2); allen2.dayin(); allen2.change(3, 1); return 0; }

技術分享圖片

類模版實現增刪改查