C++ 模板類動態記憶體分配
阿新 • • 發佈:2018-11-16
總時間限制:
1000ms
記憶體限制:
65536kB
// 在此處補充你的程式碼
描述
程式填空,輸出指定結果
#include <iostream> #include <string> #include <cstring> using namespace std; template <class T> class myclass {
~myclass( ) { delete [] p; } void Show() { for( int i = 0;i < size;i ++ ) { cout << p[i] << ","; } cout << endl; } }; int a[100]; int main() { char line[100]; while( cin >> line ) { myclass<char> obj(line,strlen(line));; obj.Show(); int n; cin >> n; for(int i = 0;i < n; ++i) cin >> a[i]; myclass<int> obj2(a,n); obj2.Show(); } return 0; }
輸入
多組資料。每組第一行是一個不含空格的字串
第二行是整數n
第三行是n個整數
輸出
對每組資料,先依次輸出輸入字串的每個字母,並且在每個字母后面加逗號
然後依次再輸出輸入的n個整數 ,在每個整數後面加逗號
樣例輸入
Tom 3 3 4 5 Jack 4 1 2 3 4
樣例輸出
T,o,m, 3,4,5, J,a,c,k, 1,2,3,4,
要編寫的是一個建構函式,這個類中private中有T *p和size,是從後面的函式中看出來的
注意建構函式需要動態記憶體分配
#include <iostream> #include <string> #include <cstring> using namespace std; template <class T> class myclass { // 在此處補充你的程式碼 private: T *p; int size; public: myclass(T *t, int n) :size(n) { p = new T[size + 1]; memcpy(p, t, size * sizeof(T)); } ~myclass() { delete[] p; } void Show() { for (int i = 0; i < size; i++) { cout << p[i] << ","; } cout << endl; } }; int a[100]; int main() { char line[100]; while (cin >> line) { myclass<char> obj(line, strlen(line));; obj.Show(); int n; cin >> n; for (int i = 0; i < n; ++i) cin >> a[i]; myclass<int> obj2(a, n); obj2.Show(); } return 0; }