• 简单的MyForeach


    1.问题分析
    根据main()函数中的“MyForeach(array,array+m,Print);”可以看出,MyForeach模板需要传递三个参数,其中两个是变量,一个是函数。变量array是string *型, 变量a是int *型,所以MyForeach只能是模板。
    Print传参为(string ),Inc 传参为(int &),所以应该有两个MyForeach的模板,确保两个函数都能正确传参。
    2.解决方案
    写两个MyForeach模板,分别传递Print 和 Inc 函数。即MyForeach(T *start,T *end,void (*func)(T)) 和MyForeach(T *start,T *end,void (*func)(T & ))。

    3.算法设计

    4.编程实现

     1 #include <iostream>
     2 #include <string>
     3 using namespace std;
     4 // 在此处补充你的代码
     5 template <class T>
     6 void MyForeach(T *start,T *end,void (*func)(T)){
     7     while(start!=end)
     8         func(*start++);
     9 }
    10 template <class T>
    11 void MyForeach(T *start,T *end,void (*func)(T & )){
    12     while(start!=end)
    13         func(*start++);
    14 }
    15 //补充结束
    16 void Print(string s)
    17 {
    18     cout << s;
    19 }
    20 void Inc(int & n)
    21 {
    22     ++ n;
    23 }
    24 string array[100];
    25 int a[100];
    26 int main() {
    27     int m,n;
    28     while(cin >> m >> n) {
    29         for(int i = 0;i < m; ++i)
    30             cin >> array[i];
    31         for(int j = 0; j < n; ++j)
    32             cin >> a[j];
    33         MyForeach(array,array+m,Print);         
    34         cout << endl;
    35         MyForeach(a,a+n,Inc);         
    36         for(int i = 0;i < n; ++i)
    37             cout << a[i] << ",";
    38         cout << endl;
    39     }
    40     return 0;
    41 }

    5.结果分析

    6.总结体会

    思路还是很简单的,主要是要细心一些,一个是string类型,一个是int &类型。感觉自己对c++的理解和编程的功力还是太弱,哎。。。

  • 相关阅读:
    Linux ReviewBoard安装与配置
    窗口部件预防式验证
    python-Levenshtein几个计算字串相似度的函数解析
    exactly-once和kafka
    关于回归树的创建和剪枝
    Python神坑:sum和numpy.sum
    Python问题汇总
    ES查询之刨根问底
    安装ES
    KNN手写实践:Python基于数据集整体计算以及排序
  • 原文地址:https://www.cnblogs.com/19991201xiao/p/8832857.html
Copyright © 2020-2023  润新知