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");
}
#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");
}
相关文章推荐
- 同一个变量打印char类型和unsigned char 类型,引发的思考
- 关于argc和argv
- 【C++】万年历(时间计数器)
- C语言中二维数组的动态申请与释放
- 【C++】复数类
- The hardest problem
- C++ 中单独的下划线_是合法的标识符
- [LeetCode] Ugly Number II
- c++程序设计课程--简单的设计任务
- Biker's Trip Odomete
- C语言变量声明内存分配
- 经典任务调度算法的模拟程序
- 零基础学C语言 笔记二 scanf
- C++ 中左值与右值区别
- C/C++浮点数在内存中的存储方式
- c语言之进制转换(栈实现)
- [C++11 并发编程] 08 - Mutex std::unique_lock
- 一个C++的平衡二叉树例子
- C语言快慢指针
- C语言快慢指针