1 STL概论 版本介绍

1、为什么要建立STL:程序的复用性的提升(建立在标准之上)

2、STL的价值:

1)STL带来了极具实用价值的组件

2)以泛型思想为基础的”软件组件分类学"

3、一句话总结STL

STL实现的的是以抽象概念构架起的接口标准。

在这个接口下,任何组件相互独立;任何组件通过Iterator胶合;通过adaptor配接;通过functor选择

policy。

4、STL形成

class:自定义类别

template:将类别参数化

traits:编程技巧

通过这个三者,形成STL

5、STL六大组件

1、容器container:装数据的结构——是一种class template 模板类(vector,list,deque,set,map)

2、算法algorithm:是一种function template 模板函数 (sort,search,copy,erase。。。。。)

3、迭代器Iterator:容器和算法之间的胶合剂,所谓的“泛型指针”;是一种将operator*指针操作进行重载的class template

4、仿函数functor:行为类似函数,可作为算法的某种策略;是一种重载operator()的class或者class template

5、配接器adaptor:一种用来修饰容器、仿函数、迭代器的接口的东西(stack,queue--底层借助deque)

6、配置器allocator:负责空间配置和管理,是一个实现动态空间配置、空间管理、空间释放的class template

6、STL六大组件交互关系:

Container通过Allocator取得数据存储空间,Algorithm通过Iterator存取Container内容,Functor可以协助Algorithm而按成不同的策略变话,Adaptor可以修饰或套接Functor

7、STL组态(SGI)

SGI STL准备了一个环境组态文件<stl_config.h>,其中定义了许多常量,标示某些组件是否成立,所有STL头文件都会间接或直接包含这个组态文件,并一条件式写法哦,让pre-processor根据各个常量决定取舍哪段程序代码

8、临时对象—应用于仿函数与算法的搭配

临时对象:无名对象,非预期产生的话会造成效率负担

(传值调用,都会引发copy操作,产生临时对象)

刻意制造临时对象:在类型名后面加(),并可指定初值 eg:Shape(3,5)或int(8),相当于调用相应构造,但是不指定对象名称

9、静态常量整形数据成员(整数类型不等于int)在class内部直接给予初值

static const  int/short/long/long long/char xxxx=123;

10、++,- - ,*在iterator中占重要地位,尽量多用前置,少用后置

前置返回值,++i,i的引用

后置返回值,i++,i自增前的const临时对象

后置实现建立在前置基础上

11、iterator所表示范围为【first,last),实际范围【first,last-1】,last表示最后一个元素的下个位置  first!=last常作为循环条件

时间: 2024-10-11 04:12:31

1 STL概论 版本介绍的相关文章

linux系统原始版本介绍

*/--> pre.src {background-color: Black; color: White;} linux系统原始版本介绍 linux正式对外公布是在1991年 0.11 正是向外公布的内核版本 0.95加入虚拟文件系统思想 0.96加入网络支持和虚拟文件系统VFS 0.97 加入对新的SCSI驱动程序的支持 0.98 改善了对TCP/IP网络的支持 0.99重新设计对内存使用情况的使用分配,每个进程有4GB线性空间

STL vector的介绍(1)

尝试下翻译STL里面的一些容易和算法.四级过了,六级刚考.顺便练练自己的英语水平,翻译的不好的地方请大神多多指教哈,方便我改正. 原来均来自:http://www.cplusplus.com/ template < class T, class Alloc = allocator<T> > class vector; // generic template Vector Vectors are sequence containers representing arrays that

开源yYmVc项目 v 0.2 版本介绍

项目地址:https://code.csdn.net/hacke2/yymvc 本版本主要实现以下几点功能: 1.框架入口基于过滤器统一实现,action后缀动态配置 2.action配置模仿struts 3.增加action的辅助类 4.完成模型与视图的分离 ----------- 开源yYmVc项目 v 0.2 版本介绍,布布扣,bubuko.com

计算机的组成和Linux的发行版本介绍

计算机的组成和 Linux的发行版本介绍 计算机的组成及功能 计算机的五大组成,如下; 各部分的作用; 控制单元和算数逻辑单元是CPU的两个主要组成部分 控制单元主要协调各组件与各单元间的工作 算数逻辑单元主要负责程序运算与逻辑判断 内存,DRANM(Dynamic Random Access Memory)动态随机访问内存:CPU读取的数据都是从内存读取来的. 输入单元,下指令,提供数据的输入等:如:键盘.鼠标等 输出单元,输出数据加工后的结果:如:显示器等 CPU读取的数据都是从内存中获取,

mysql学习之-三种安装方式与版本介绍

MYSQL版本介绍 mysql分alpha,beta,rc,GA四个版本. alpha  暗示这是一个以展示新特性为目的的版本,存在比较多的不稳定因素,还会向代码中添加新新特性 beta 以后的beta版.发布版或产品发布中,所有API.外部可视结构和SQL命令列均不再更改,不再向代码中添加影响代码稳定性的新特性. rc 是指 Release Candidate. Release candidates被认为是稳定的, 通过了mysql所有的内部测试, 修正了所有已知的致命bug. 但是rc版本还

Hadoop发行版本介绍

前言 从2011年开始,中国进入大数据风起云涌的时代,以Hadoop为代表的家族软件,占据了大数据处理的广阔地盘.开源界及厂商,所有数据软件,无一不向Hadoop靠拢.Hadoop也从小众的高富帅领域,变成了大数据开发的标准.在Hadoop原有技术基础之上,出现了Hadoop家族产品,通过“大数据”概念不断创新,推出科技进步. 目录 Hadoop的发展史 Hadoop的发行版本的选择和介绍 1. Hadoop发展史 1.1Hadoop产生背景 Hadoop 最早起源于Nutch .Nutch 是

最全最详细的蓝牙版本介绍包含蓝牙4.0和4.1

概述:蓝牙核心规范发展的主要版本: 表1  蓝牙核心规范发展介绍 版本 规范发布 增强功能 0.7 1998.10.19 Baseband.LMP 0.8 1999.1.21 HCI.L2CAP.RFCOMM 0.9 1999.4.30 OBEX与IrDA的互通性 1.0 Draft 1999.7.5 SDP.TCS 1.0 A 1999.7.26 第一个正式版本 1.0 B 2000.10.1 安全性,厂商设备之间连接兼容性 1.1 2001.2.22 IEEE 802.15.1 1.2 20

Linux主要发行版本介绍

Linux主要发行版本介绍 1.Red Hat Linux Red Hat是一个比较成熟的Linux版本,无论在销售还是装机量上都比较可观.该版本从4.0开始同时支持Intel.Alpha及Sparc硬件平台,并 且通过Red Hat公司的开发使得用户可以轻松地进行软件升级,彻底卸载应用软件和系统部件.Red Hat最早由Bob Young和Marc Ewing在1995年创建,目前分为两个系列,即由Red Hat公司提供收费技术支持和更新的Red Hat Enterprise Linux,以及

XAMPP 各个版本所包含的Apache、MySQL、PHP版本介绍

The table below details the versions of Apache, MySQL, and PHP included in each version of XAMPP. XAMPP Apache MySQL PHP 5 PHP 4 1.8.3 2.4.9 5.6.16 5.5.11   1.8.2 2.4.9 5.5.36 5.4.27   1.8.1 2.4.3 5.5.27 5.4.7   1.8.0 2.4.2 5.5.25a 5.4.4   1.7.7 2.2.