您的位置:首页 > 编程语言 > C语言/C++

c++ 模板函数,类模板,仿函数使用实例代码

2015-08-21 23:26 459 查看
1.模板函数

#include <iostream>

using namespace std;

template <class T>

T myMin(T x, T y)

{

return (x < y) ? x : y;

}

void main( )

{

int n1 = 2, n2 = 10;

double d1 = 1.5, d2 = 5.6;

cout<< "较小整数:"<< myMin(n1,n2) << endl;

cout<< "较小实数:"<< myMin(d1,d2) << endl;

system("PAUSE");

}

2.类模板

classtemplate.h

#ifndef _CLASS_TEMPLATE_H_

#define _CLASS_TEMPLATE_H_

#include <iostream>

using namespace std;

namespace classtemplate

{

template<typename T1, typename T2>

class myClass

{

public:

myClass(T1 a, T2 b);

void show();

private:

T1 I;

T2 J;

};

template<typename T1, typename T2>

myClass<T1, T2>::myClass(T1 a, T2 b) : I(a), J(b)

{

}

template<typename T1, typename T2>

void myClass<T1, T2>::show()

{

cout << "I=" << I << ", J=" << J << endl;

}

}

#endif

TestMain.cpp

#include <iostream>

#include "ClassTemplate.h"

using namespace std;

using namespace classtemplate;

void main()

{

myClass<int, int> class1(3, 5);

class1.show();

myClass<int, char> class2(6, 'a');

class2.show();

myClass<double, int> class3(2.9, 10);

class3.show();

system("PAUSE");

}

3.使用模板类型

#include <iostream>

#include <list>

#include <vector>

using namespace std;

template<typename T>

void print(T v)

{

T::iterator itor;

for (itor = v.begin(); itor != v.end(); ++itor)

{

cout << *itor << " ";

}

cout << endl;

}

void main()

{

list<int> l;

l.push_back(1);

l.push_front(2);

if(!l.empty())

print(l);

vector<int> vec;

vec.push_back(1);

vec.push_back(6);

if(!vec.empty())

print(vec);

system("PAUSE");

}

4.仿函数

#include <iostream>

using namespace std;

class DoSome

{

public:

void operator()(int i);

};

void DoSome::operator()(int i)

{

cout << i << endl;

}

void main()

{

DoSome doSome;

doSome(10);

system("PAUSE");

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: