随笔分类 -  C++STL学习

摘要:http://www.cnblogs.com/assemble8086/archive/2011/10/02/2198308.html有详细介绍,下面只讲什么时候模板类会实例化以及模板类中成员函数实例化和友元函数的使用。模板类的使用实现了编译时多态性,避免了运行时多态性的消耗(虚指针和虚函数表),但是编译时多态和运行时多态并不冲突,编译时多态是根据传入模板的对象类型实现不同的操作完成,比如继承同一接口的不同类型可以在编译时根据调用接口的队形类型实现多态,而运行时多态则根据虚函数来实现,必须等到运行时才能判断真正运行的接口。当模板类中使用虚函数时,模板实例化的时候必须实例化器虚函数表,一旦虚函数 阅读全文
posted @ 2012-12-14 23:38 我不是geek 阅读(5797) 评论(0) 推荐(0)
摘要:伪函数或者函数对象只是翻译的问题,英文全部都是functor,还有些读物管这个叫函数符。functor作为C++ STL六大基本组件之一被广泛使用(其他五个分别是容器、演算法、迭代器、适配器、分配器),那么,functor的意义在哪里?或者说它有什么作用?这项技术从概念上不难理解,伪函数也好,函数对象也好,都说明了它不是真正的函数,而是一种类似函数作用的东西,在STL里,我们经常需要对容器内元素进行批量操作,手写循环确实是个方法,但是,代码冗余,而且效率普遍偏低,这就需要一个批量操作方法,能够对容器内的元素进行批量操作,那么,怎么操作,操作什么,这就需要用户去定义了,你需要告诉程序,你想要什么 阅读全文
posted @ 2012-11-15 22:40 我不是geek 阅读(2060) 评论(0) 推荐(0)
摘要:一、迭代器的概念迭代器是STL将数据容器和算法分开后连接的纽带,也是泛型思维发展的必然结果。泛型算法就是通过迭代器操作容器的,使得算法和容器本身分离开来。迭代器模式:提供一种方式,可以依次访问一个聚合物(容器)中所有元素而不暴露聚合物内部的表达方式。迭代器类似与智能指针,但是它一般不会对所指向的元素进行释放空间,因为迭代器只是在指针外面包裹一层外加一些操作。迭代器最重要编码工作是完成一些操作符的重载,这些重载都是针对指针类型的操作,例如,++,——,*,->等,不同类型的迭代器完成的功能都不相同,详解见下文。迭代器定义的位置最好是在容器内,将定义的任务交给了容器的设计者,因为每一种容器都 阅读全文
posted @ 2012-10-26 22:34 我不是geek 阅读(2301) 评论(0) 推荐(1)
摘要:STL全称为标准模板库,它是一套程序库,是一个框架,是一个架构,不仅仅提供了大量的数据结构和算法,还带给我们一个高层次的、以泛型编程为基础的、系统化的、组件化设计的方法。STL是基于泛型编程架设起来的概念结构,它分成几个大部分,每个部分之间由接口、迭代器或适配器连接起来,形成了一个完整的架构。STL提供了六大组件:容器、迭代器、算法、仿函数、配接器(适配器)、配置器。其中容器、算法和迭代器主要用于应用,仿函数和适配器主要用于连接和算法的策略,配置器主要为容器进行内存管理。容器是各种数据结构,比如vector、list、deque、set、map、hash等。算法是一些函数模板用于容器,比如排序 阅读全文
posted @ 2012-10-17 21:47 我不是geek 阅读(427) 评论(0) 推荐(0)