C++ 模板函式指標程式設計練習
阿新 • • 發佈:2018-11-16
總時間限制:
1000ms
記憶體限制:
65536kB
// 在此處補充你的程式碼
描述
編寫MyForeach模板,使程式按要求輸出 不得編寫 MyForeach函式
#include <iostream> #include <string> using namespace std;
void Print(string s) { cout << s; } void Inc(int & n) { ++ n; } string array[100]; int a[100]; int main() { int m,n; while(cin >> m >> n) { for(int i = 0;i < m; ++i) cin >> array[i]; for(int j = 0; j < n; ++j) cin >> a[j]; MyForeach(array,array+m,Print); cout << endl; MyForeach(a,a+n,Inc); for(int i = 0;i < n; ++i) cout << a[i] << ","; cout << endl; } return 0; }
輸入
多組資料
每組資料第一行是兩個整數 m 和 n ,都不超過 50
第二行是m個不帶空格的字串
第三行是 n個整數
輸出
對每組資料
第一行輸出所有輸入字串連在一起的結果
第二行輸出輸入中的每個整數加1的結果
樣例輸入
3 4 Tom Mike Jack 1 2 3 4 1 2 Peking 100 200
樣例輸出
TomMikeJack 2,3,4,5, Peking 101,201,
來源
Guo Wei
顯然這個函式引數前兩個是資料指標,後一個是函式指標,要特別注意必須有兩個模板引數,否則編譯通過不了
#include <iostream> #include <string> using namespace std; // 在此處補充你的程式碼 template<class T,class T1> void MyForeach(T* array_start, T* array_end, void f(T1 t)) { T* i; for (i = array_start; i != array_end; i++) f(*i); } void Print(string s) { cout << s; } void Inc(int & n) { ++n; } string array[100]; int a[100]; int main() { int m, n; while (cin >> m >> n) { for (int i = 0; i < m; ++i) cin >> array[i]; for (int j = 0; j < n; ++j) cin >> a[j]; MyForeach(array, array + m, Print); cout << endl; MyForeach(a, a + n, Inc); for (int i = 0; i < n; ++i) cout << a[i] << ","; cout << endl; } return 0; }