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; }