Chinaunix首页 | 论坛 | 博客
  • 博客访问: 305293
  • 博文数量: 33
  • 博客积分: 132
  • 博客等级: 入伍新兵
  • 技术积分: 1002
  • 用 户 组: 普通用户
  • 注册时间: 2012-09-16 22:24
个人简介

学习计算机科学与技术专业,喜欢计算机,喜欢linux,喜欢编程

文章存档

2014年(7)

2013年(12)

2012年(14)

分类: C/C++

2014-03-04 13:01:30

说到模板,我们得先来看看重载。

先让我们来求一个一维数组的最大值,这里我们用到了重载:

  1. #include <iostream>
  2. int getmax(int const *a, unsigned size);
  3. char getmax(char const *a, unsigned size);
  4.                           
  5. int main()
  6. {
  7.     int num[] = {4, 9, 2, 7, 5, 6};
  8.     char abc[] = {'d', 'c', 's', 'j'};
  9.     std::cout << getmax(num, 6) << std::endl;
  10.     std::cout << getmax(abc, 4) << std::endl;
  11.     return 0;
  12. }

// 求整形最大值
  1. char getmax(char const *a, unsigned size)
  2. {
  3.     char max = a[0];
  4.     for (unsigned i = 1; i < size; i++)
  5.     {
  6.         if (a[i] > max)
  7.         {
  8.             max = a[i];
  9.         }
  10.     }
  11.     return max;
  12. }


下面是用 python 实现求一维数组的最大值:

  1. def getmax(a):
  2.     maxtemp = a[0]
  3.     for temp in a:
  4.         if temp > maxtemp:
  5.             maxtemp = temp
  6.                                                
  7.     return maxtemp
  8. print getmax([1, 2, 8, 5])
  9. print getmax(['w', 'h', 's'])


可以看出,无论是整形的还是字符型的,用一个函数就都能搞定了。是不是很简洁,这就是模板的魅力,现在我们用 C++也来实现下这个模板:

  1. #include <iostream>
  2.                      
  3. // 函数模板
  4. template <typename Type>
  5. Type getmax(Type *a, unsigned size)
  6. {
  7.     Type temp = a[0];
  8.     for (unsigned i = 1; i < size; i++)
  9.     {
  10.         if (temp < a[i])
  11.         {
  12.             temp = a[i];
  13.         }
  14.     }
  15.     return temp;
  16. }
  17.                      
  18. int main()
  19. {
  20.     int a[] = {1 ,2, 5, 4, 12, 3, 7, 6, 8, 9};
  21.     char b[] = {'a', 'y', 'b', 't', 'g', 'u'};
  22.                          
  23.     std::cout << getmax<int>(a, 10) << std::endl;
  24.     std::cout << getmax<char>(b, 6) << std::endl;
  25.                      
  26.     return 0;
  27. }

从上面的函数可以看出,函数模板简化了程序的实现,是程序更容易理解,更加方便。当然了,C++比 python 的实现还是有些复杂的,那是因为 python 是弱类型语言。但是无论如何我们都可以看出模板的魅力。


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