什么是泛型编程?简单来说,泛型编程,意思就是针对广泛类型的编程方式。具体类型可以有不同的实现方式,但是针对广泛类型编程,就能在需要调用时才指定参数类型或者调用类型。泛型编程是一种基于发现高效算法的最抽象表示的编程方法。也就是说,以算法为起点并寻找能使其工作并且有效率的工作的最一般的必要条件集。可以想...
分类:
编程语言 时间:
2015-01-10 22:16:09
阅读次数:
338
Effective C++学习笔记一
条款01:视C++为一个语言联邦
Ø C
Ø Object-Oriented C++
Ø Template C++//泛型编程部分(generic programming)
Ø STL
C++高效编程守则视情况而变化,取决与你使用C++的哪一部分。
条款02:尽量以const, enum, inline替换#define
Ø 对于单纯常量...
分类:
编程语言 时间:
2015-01-03 10:42:47
阅读次数:
123
第7部分:模板与泛型编程
所谓泛型编程就是以独立于任何特定类型的方式编写代码。使用泛型程序时,我们需要提供具体程序实例所操作的类型或值。模板是泛型编程思想的一种实现,也是C++研发者思想精髓所在。...
分类:
编程语言 时间:
2014-12-31 20:15:10
阅读次数:
215
Java中的泛型代码和C++中的模板有一个很大的不同:C++中模板的实例化会为每一种类型都产生一套不同的代码,这就是所谓的代码膨胀。
Java中并不会产生这个问题。虚拟机中并没有泛型类型对象,所有的对象都是普通类。
虚拟机中的泛型转换需要记住4条事实:
1) 定义任何一个泛型都会自动产生其原始类型(raw type)
2) 这个过程中,泛型类型会被擦除,替换为其限定类型
......
分类:
编程语言 时间:
2014-12-31 20:13:59
阅读次数:
236
泛型中使用通配符有两种形式:子类型限定和超类型限定。...
分类:
编程语言 时间:
2014-12-31 20:13:24
阅读次数:
172
非成员begin()和end()也许你注意到了,我在前面的例子中已经用到了非成员begin()和end()函数。他们是新加入标准库的,除了能提高了代码一致性,还有助于更多 地使用泛型编程。它们和所有的STL容器兼容。更重要的是,他们是可重载的。所以它们可以被扩展到支持任何类型。对C类型数组的重载已经...
分类:
编程语言 时间:
2014-12-27 00:10:14
阅读次数:
228
STL源码分析—使用的一些特殊语法
关于泛型编程中用到的一些特殊语法,这些语法也适用于平常的模板编程
1、 类模板中使用静态成员变量
Static成员变量在类模板中并不是很特殊,同时这个变量不属于对象,属于实例化以后的这个类类型。每一个实例化对应一个static变量
2、 类模板中可以再有模板成员
3、 模板参数可以根据前一个模板参数而设定默认值
4、 类模板可以拥有非类型的模...
分类:
其他好文 时间:
2014-12-26 13:03:06
阅读次数:
170
通读《泛型编程与STL》,总的感觉是这本书前后反差较大,前半部分非常抽象,后半部分-类似一个API速查手册,相对简单。
STL主要涉及三个方面:容器,迭代器,算法,各自职责为:容器存数据,迭代器取数据,算法操纵数据。它们之间的简单关系是:算法通过迭代器操作容器,容器通过迭代器访问自身数据元素。可以说,迭代器做到了让算法和容器解耦,同时,模板又做到了让迭代器与数据类型解耦。迭代器起到了...
分类:
其他好文 时间:
2014-12-25 22:13:39
阅读次数:
185
c++:
《c++程序设计》
《c++primer》
《effective c++》
《more effective c++》
《深入探索c++对象模型》
《泛型编程与STL》
《STL源码剖析》
数据结构与算法:
《算法导论》
《introduction of the design and analysis of algorithm》
《数据结构与算法分析:c语言描...
分类:
其他好文 时间:
2014-12-24 00:04:18
阅读次数:
162
各类容器迭代器失效的场景:
其实在定义迭代器失效的时:在某些操作完成以后,认为这个迭代器指向的值有变化或者迭代器直接指向不合法的空间,都认为迭代器失效。只要不是指向操作之前的值都认为迭代器失效。
当要将元素安插于vector内,大小与容量之间的差别就变得格外重要。如果vector的大小等于其容量,安插新元素的唯一方法就是增加这个vector的内存总量,这意味得分配一块新的而且更大的内存,再将旧...
分类:
其他好文 时间:
2014-12-22 16:21:06
阅读次数:
136