zoukankan      html  css  js  c++  java
  • C plus 笔记(一 )

    传值函数:
    int Abc(int a, int b, int c){
    
        return a+b+b*c+(a+b-c)/(a+b)+4;
    
    }
    模板函数:
    template<class T> 
    T  Abc(T  a, T  b, T  c){
    	return a+b+b*c+(a+b-c)/(a+b)+4;
    }

    形式参数的用法会增加程序的运行开销

    类型T 的复制构造函数把相应的实际参数分别复制到形式参数a,b和c之中,以供函数使用;而在函数返回时,类型
    T的析构函数会被唤醒,以便释放形式参数a,b和c

      1: template<class T>
    
      2: T Abc(T& a, T& b, T& c){
    
      3:      return a+b+b*c+(a+b-c)/(a+b)+4;
    
      4: }

    引用参数(reference parameter)

    在函数被调用时,本程序并没有复制实际参数的值,在函数返回时也没有调用析构函数。

    常量引用参数

    常量引用(const reference),这种模式指出函数不得修改引用参数。

      1: template<class T>
    
      2: T Abc(const T& a, const T& b, const T& c)
    
      3: {
    
      4: return a+b+b*c+(a+b-c)/(a+b)+4;
    
      5: }

    使用关键字const 来指明函数不可以修改引用参数的值,这在软件工程方面具有重要的意。这将立即告诉用户该函数并不会修改实际参数。

    对于诸如i n t、float 和char 的简单数据类型,当函数不会修改实际参数值的时候我们可以采用传值参数;对于所有其他的数据类型(包括模板类型),当函数不会修改实际参数值的时候可以采用常量引用参数。

    template<class Ta, class Tb, class Tc >
    Ta Abc (const Ta& a, const Tb& b, const Tc& c)
    {
            return a+b+b*c+(a+b-c)/(a+b)+4;
    }
    递归函数(recursive function)是一个自己调用自己的函数
    累加求和
      1: template<class T>
    
      2: T Sum(T a[], int n){ 
    
      3:       / /计算a[0: n-1]的和
    
      4:     T tsum=0;
    
      5:     for (int i = 0; i < n; i++){
    
      6:            tsum += a[i];
    
      7:     }          
    
      8:     return tsum;
    
      9: }

    递归求和:

    template<class T>
    T Rsum(T a[], int n){ 
    	/ /计算a[0: n-1]的和
    	if (n > 0)
    		return Rsum(a, n-1) + a[n-1];
    	return 0;
    }

     

  • 相关阅读:
    51nod 1087 1 10 100 1000(找规律+递推+stl)
    51nod 1082 与7无关的数 (打表预处理)
    51 nod 1080 两个数的平方和
    1015 水仙花数(水题)
    51 nod 1003 阶乘后面0的数量
    51nod 1002 数塔取数问题
    51 nod 1001 数组中和等于K的数对
    51 nod 1081 子段求和
    51nod 1134 最长递增子序列 (O(nlogn)算法)
    51nod 1174 区间中最大的数(RMQ)
  • 原文地址:https://www.cnblogs.com/buttonwood/p/2518608.html
Copyright © 2011-2022 走看看