Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1146778
  • 博文数量: 290
  • 博客积分: 3468
  • 博客等级: 中校
  • 技术积分: 3461
  • 用 户 组: 普通用户
  • 注册时间: 2010-12-28 22:21
文章分类

全部博文(290)

文章存档

2016年(13)

2015年(3)

2014年(42)

2013年(67)

2012年(90)

2011年(75)

分类: C/C++

2015-03-24 23:02:41

tempale 函数,template class 的例子

点击(此处)折叠或打开

  1. #include <iostream>
  2. #include <vector>

  3. using namespace std;

  4. template <typename T>
  5. T compare_fn(T a, T b)
  6. {
  7.     return (a > b ? a : b);
  8. }

  9. template <typename T>
  10. void print_vector(const vector<T> & tVec)
  11. {
  12.     cout << "it's vector:" << endl;
  13.     for (typename vector<T>::const_iterator it=tVec.begin(); it!=tVec.end(); ++it)
  14.     {
  15.         cout << *it << " ";
  16.     }

  17.     cout << endl;
  18. }

  19. template <typename T>
  20. class TCompare {
  21. public:
  22.     TCompare(const T a, const T b);

  23.     T maxValue();
  24.     T minValue();
  25. private:
  26.     T m_tValue1;
  27.     T m_tValue2;
  28. };

  29. template <typename T>
  30. TCompare<T>::TCompare(const T a, const T b)
  31. : m_tValue1(a), m_tValue2(b)
  32. {

  33. }

  34. template <typename T>
  35. T TCompare<T>::maxValue()
  36. {
  37.     return (m_tValue1 > m_tValue2 ? m_tValue1 : m_tValue2);
  38. }

  39. template <typename T>
  40. T TCompare<T>::minValue()
  41. {
  42.     return (m_tValue1 < m_tValue2 ? m_tValue1: m_tValue2);
  43. }

  44. #define ARRAY_SIZE(x) (sizeof(x)/sizeof(x[0]))

  45. int main()
  46. {
  47.     cout << compare_fn(4, 5) << endl;
  48.     cout << compare_fn(6, 3) << endl;
  49.     cout << compare_fn(3.3, 4.5) << endl;
  50.     cout << compare_fn('a', 'd') << endl;

  51.     TCompare<int> a(4, 5);
  52.     TCompare<int> b(6, 3);
  53.     TCompare<float> c(3.3, 4.5);
  54.     TCompare<char> d('a', 'd');

  55.     cout << "max:" << a.maxValue() << endl;
  56.     cout << "min:" << a.minValue() << endl;

  57.     cout << "max:" << b.maxValue() << endl;
  58.     cout << "min:" << b.minValue() << endl;

  59.     cout << "max:" << c.maxValue() << endl;
  60.     cout << "min:" << c.minValue() << endl;

  61.     cout << "max:" << d.maxValue() << endl;
  62.     cout << "min:" << d.minValue() << endl;

  63.     int array_int[] = {1, 2, 3, 4, 5};
  64.     char array_c[] = {'a', 'b', 'c'};

  65.     vector<int> ivec(array_int, array_int + ARRAY_SIZE(array_int));
  66.     print_vector(ivec);

  67.     vector<char> cVec(array_c, array_c + ARRAY_SIZE(array_c));
  68.     print_vector(cVec);

  69.     return 0;
  70. }

阅读(743) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~