c++辅助函数:

c++辅助函数:

常用辅助函数 max() 、min()

//std详解如下
//两个参数
     template <class T>
     inline const T& min(const T& a,const T& b) {
         return b < a ? b : a;
     }         
     template <class T>
     inline const T& max(const T&a,const T& a) {
         return a <b ? b : a;
	 }	
//三个参数 第三个参数为评判标准
  template <class T, class Compare>
  inline const T& min(const T& a,const T& b,Compare comp) {
    return comp(b,a) ? b : a;
  }
  template <class T, class Compare>
  inline const T& max(const T& a,const T& b,Compare comp) {
    return comp(a,b) ? b : a;
  }

实例

#include <iostream>
#include <algorithm>
using namespace std;

bool int_ptr_less(int *a,int *b)
{
  return *a < *b;
}

int main()
{
  int x =50;
  int y =100;
  int *px =&x;
  int *py =&y;
  int *pmax;
  int *pmin;
  pmax =max(px,py,int_ptr_less);
  pmin =min(px,py,int_ptr_less);
  cout << "max =" <<*pmax << endl;
  cout <<  "min = " << *pmin << endl;
  return 0;
}

常用辅助函数 swap()

template<class T>
  inline void swap(T& a, T& b) {
        T tmp(a);
        a =b;
        b =tmp;
    }      
//例子

using namespace std;

class MyContainer {
  private :
    int *elems;
    int num;
  public:
      void swap(MyContainer &x)
      {
        std::swap(elems,x.elems);
        std::swap(num,x.num);
      }
    void Init(MyContainer &x,int a[],int n)
    {
      x.elems =a;
      x.num =n;
    }
    void  print()
    {
       cout << "num :" ;
       cout << num <<endl;
       cout << "elems: ";
       for (int i =0; i <num; i++)
           cout << elems[i] << " ";
       cout <<endl;

    }
};

inline void swap(MyContainer &c1,MyContainer &c2)
{
  c1.swap(c2);
}

int main()
{
  MyContainer c1,c2;
  int a[] ={1,2,3};
  int b[] ={4,5,6,7};
   c1.Init(c1,a,3);
  c2.Init(c2,b,4);
  cout << "swap前:" <<endl;

  cout <<"C1:" <<endl;
  c1.print();
  cout << "C2: " <<endl;
  c2.print();
  swap(c1,c2);

  cout << "交换后:"<<endl;
  cout <<"C1:" <<endl;
  c1.print();
  cout << "C2: " <<endl;
  c2.print();
  return 0;
}
全部评论

相关推荐

2024-11-21 14:22
门头沟学院 硬件开发
点赞 评论 收藏
分享
尊嘟假嘟点击就送:加v细说,问题很大
点赞 评论 收藏
分享
01-01 23:38
门头沟学院 Java
杭州同花顺 后端开发 1.5n左右
想当offer收割机的肖恩很爱刷美剧:现在这个环境,狠狠赚钱才是实际的,1是银行的子公司,技术很老,现在银行都在大规模降薪这种科技子公司肯定也在逐渐降薪,而且你也不好跳槽;2虽然钱比1多,但是各种福利待遇基本全无,加班时间可能跟1差不多,但是后续跳槽会比1好;3是大平台,而且钱确实给的很够,发展前景就不用看了,现在这个环境技术发展前景并不一定就好,非技术并不一定就差。个人认为3>2>1
点赞 评论 收藏
分享
评论
点赞
1
分享
牛客网
牛客企业服务