泛型编程与设计新思维

前言

永远记住,编写代码的宗旨在于简单明了,不要使用语言中的冷僻特性,耍小聪明,重要的是编写你理解的代码,理解你编写的代码,这样你可能会做的更好。

1998年,国际C++标准正式通过,标准化对C++最重要的贡献是:对"强大的抽象概念"给于更有力的支持,以降低软件的复杂度,C++提供了二种功能强大的抽象方法:面向对象编程与泛型编程。面向对象编程大家一定很熟悉了,这里就不再哆嗦了。提到泛型编程(Generic Programming),有的人可能还不太熟悉,但是提到STL,你就一定会有所耳闻了。STL(Standard Template Library,标准模板库) 其实就是泛型编程的实现品,STL是由Alexander Stepanov(STL之父)、David R Musser和Meng Lee三位大师共同发展,于1994年被纳入C++标准程序库。STL虽然加入C++标准库的时间相对较晚,但它却是C++标准程序库中最具革命性的部分,同时也是C++标准程序库中最重要的组成部分。由于新的C++标准库中几乎每一样东西都是由模板(Template)构成的,当然,STL也不会例外。所以,在这里有必要先概要说明一下模板的有关概念。

模板概念

通过使用模板可以使程序具有更好的代码重用性。记住,模板是对源代码进行重用,而不是通过继承和组合重用对象代码,当用户使用模板时,参数由编译器来替换。模板由类模板和函数模板二部分组成,以所处理的数据类型的说明作为参数的类就叫类模板,而以所处理的数据类型的说明作为参数的函数叫做函数模板。模板参数可以由类型参数或非类型参数组成,类型参数可用class和typename关键字来指明,二者的意义相同,都表示后面的参数名代表一个潜在的内置或用户定义的类型,非类型参数由一个普通参数声明构成。下面是类模板和函数模板的简单用法:

template<class T1, int Size>
class Queue    // 类模板,其中T1为类型参数,Size为非类型参数
{
public:
  explicit Queue():size_(Size){};    // 显式构造,避免隐式转换
  ……
  template<class T2> void assign(T2 first,T2 last);  // 内嵌函数模板
private:
  T* temp_;
  int size_;
}
  // 类模板中内嵌函数模板Compare的外围实现(如在Queue类外实现)
  template<class T1,int Size> template<class T2>
  void Queue<T1,Size>::assign (T2 first,T2 last) {};
  // 模板的使用方法
  int ia[4] = {0,1,2,3};
  Queue<int, sizeof(ia)/sizeof(int)> qi;
  qi.assign(ai,ai+4);

时间: 2024-10-02 19:45:52

泛型编程与设计新思维的相关文章

日益增长的需求催生数据中心设计新思维

预计截止至2020年,互联设备的数量将达到500亿.而如此众多的设备预计将在2017年产生高达7.7 ZB的互联网数据.随着运营商放弃了客户端-服务器以及局域网(LAN)架构,并转而青睐侧重在服务器.存储与网络中采用虚拟化的设计,如此大量的数据处理需求将给数据中心生态系统带来巨大挑战.为此,有越来越多的公司开始选择基于移动计算.云服务.大数据和社交网络等领先技术的更加灵活且开放的平台.   亚马逊.谷歌与Facebook等创新领袖正在积极构建超大规模的数据中心,以处理海量的带宽需求与工作负载.最

2013网页设计新趋势:扁平化网页设计

文章描述:这里简单介绍下关于扁平化的概念,所谓"扁平化设计"一词所指的是抛弃那些已经流行多年的渐变.阴影.高光等拟真视觉效果,从而打造出一种看上去更"平"的界面.善于用颜色去鼓励用户探索. 随着互联网的高速发展,我们可以看到质感厚重,图层样式繁多的网站越来越少,反之各种轻质感,布局大胆.创意新颖.的网站慢慢进入了大家的视野,人类发展至今,人们的审美.时尚标准总是无时无刻不在改变,互联网也是这样,下面这篇文章将要给大家谈谈2013网页设计新风向 "扁平化设计

基于J2EE架构的企业应用开发新思维:Web应用以谁为中心

基于J2EE架构的企业应用开发新思维:Web应用以谁为中心?浏览器?服务器 企业Web应用,指的是企业内部使用B/S架构搭建的企业信息系统,用户一般局限在企业内部,为了适应企业某个业务流程而设计开发使用的系统. 出于跨地域部署升级的考虑,一般采用B/S模式进行开发,避免在每个客户端安装配置的麻烦. 一般情况下,前台浏览器特指IE浏览器,前台操作系统选择Windows操作系统. 非Windows操作系统的客户机与非IE的浏览器不在本文讨论范围之内. 本文主要讨论以J2ee架构为基础的Web应用,其

攻防计中计:教你如何隐藏,躲避APT攻击的新思维

本文讲的是攻防计中计:教你如何隐藏,躲避APT攻击的新思维, 本文将为你介绍一下,关于预防网络攻击的新思维--为网络攻击设计多个假的攻击目标及路径,降低他们的攻击效率. 交互式防护是一种安全系统特性,其意味着防御者会与攻击者及其使用的攻击工具进行交互攻防以及根据攻击者的行为作出相应的预防措施.比如,防御者会引入垃圾搜索结果以混淆网络攻击者使用的漏洞扫描程序就是一种交互式防护,除了这些被动防御之外,研究人员长期以来一直使用交互式防护的方法来主动获取关于网络攻击者的攻击信息,比如攻击目标等. 但交互

《数据科学家修炼之道》一2.3 新思维与随之而来的变化

2.3 新思维与随之而来的变化 到现在为止,你大概能认识到数据科学不仅仅是一些聪明的工具.方法论和运用方法了.这是一种对数据的全新的整体认知.很自然地,这种规则转变带来了人们在处理相关项目时的方式,如何参与亟待解决的问题,以及如何以从业者的身份使自己成长. 数据科学需要我们更系统地思考,将对问题的创见性方法与实际情况结合在一起.这就好像是以一个优秀的建筑师一样的思维方式,将艺术的角度(通过设计)与工程本身,以及时间的管理一起结合起来.规划对于使用大数据来说是至关重要的,尽管是同一件任务,但不同的

新思维蒙特梭利早教中心玻璃门夹伤2岁女孩手指

昨日,在新溪桥路的中益雅苑小区的一家幼儿园内,一名2岁女孩不慎将手指夹入门缝中,随后赶来的消防人员为了避免女孩受伤,设计了三套救援方案,终于在15分钟后将其成功救出.等待救援 2岁女孩没哭一声昨日中午12时许,记者赶到新溪桥路的中益雅苑小区,事情就发生在小区内的新思维蒙特梭利早教中心.在早教中心一楼大厅的玻璃门旁,围了许多人,一个站着的女孩靠在老师身边,眼睛四处张望,显得十分紧张.记者看到,眼前这个女孩的右手中指和无名指被夹在玻璃门的夹缝中,两根手指已经发红.记者赶到时,洪都消防中队的消防人员正

如何抢占物联网市场? 新思维的合理利用是关键

最近大学指定科目考试成绩出炉后,如何选填志愿成为考生最关心的问题.根据某坊间网路讨论度调查,发现网友讨论科系时,最注重未来求职的发展性占49%,其次才是师资19%.录取条件16%.学费10%.学校环境6%.资工系打败所有科系获得最高的正面评价,主要原因是大家都看好资工的发展,尤其当前物联网(InternetofThings,IoT)产业的巨大潜力. 如何抢占物联网市场?新思维的合理利用是关键 物联网顾名思义要物物相连,指的是将生活使用的物品.设备.设施透过无线或有线的方式做相互串联,让各物品间可

全球高管调查报告之CIO洞察 - 新思维创造IT新格局

天上之水,不辞九曲之苦,终成华夏澎湃之强音;万里长城,屹立苍穹之下,构筑中华骄傲之图腾.崇吾之山,率土之滨.天耀中卫,太阳之城.花儿杞乡沐霞光万道,世界沙都乘万里长风. 金秋九月,秋高气爽.宁夏中卫,既揽西北风光之雄奇,又兼江南景色之秀美,碧水蓝天,湖光沙色,林荫碧翠.在这美丽的"世外桃源",2016年CIOC全国CIO大会在此盛大举办,来自全国300余位CIO共聚一堂,最接地气的观点.最实用的实战经验.最前沿的技术.最新的产品在此汇聚,碰撞出属于CIO的精彩的火花.   以下为IBM

发展与安全并进:用新思维应对大数据安全挑战

在中国大数据产业峰会上,李克强总理强调,"大数据等新一代互联网技术深刻改变了世界,也让各国站在科技革命的同一起跑线上".纵观历史,人类的每一次在科学和技术上取得的重大突破,不仅深刻的改变了生产和生活模式,而且改变了一个国家.一个民族的命运.在与几次科技革命失之交臂后,中国这一次借助新一轮科技革命的关键机遇,与世界强国站在了同一起跑线上,大数据已经成为我们国家的战略选择.发令枪已响,如何让我们国家的大数据跑的又快又好,大数据安全与大数据发展同步建设是必然选择,作好大数据"钻石矿