导航:首页 > 文件教程 > 特化头文件

特化头文件

发布时间:2025-03-17 19:46:59

Ⅰ STL是什么意思

什么是STL呢?STL就是Standard
Template
Library,标准模板库。这可能是一个历史上最令人兴奋的工具的最无聊的术语。从根本上说,STL是一些“容器”的集合,这些“容器”有list,vector,set,map等,STL也是算法和其他一些组件的集合。这里的“容器”和算法的集合指的是世界上很多聪明人很多年的杰作。
STL的目的是标准化组件,这样就不用重新开发,可以使用现成的组件。STL现在是C++的一部分,因此不用额外安装什麽。它被内建在你的编译器之内。因为STL的list是一个简单的容器,所以我打算从它开始介绍STL如何使用。如果你懂得了这个概念,其他的就都没有问题了。另外,list容器是相当简单的,我们会看到这一点。
在本文中我们将会看到如何定义和初始化一个list,计算它的元素的数量,从一个list里查找元素,删除元素,和一些其他的操作。要作到这些,我们将会讨论两个不同的算法,STL通用算法都是可以操作不止一个容器的,而list的成员函数是list容器专有的操作。
这是三类主要的STL组件的简明纲要。STL容器可以保存对象,内建对象和类对象。它们会安全的保存对象,并定义我们能够操作的这个对象的接口。放在蛋架上的鸡蛋不会滚到桌上。它们很安全。因此,在STL容器中的对象也很安全。我知道这个比喻听起来很老土,但是它很正确。
STL算法是标准算法,我们可以把它们应用在那些容器中的对象上。这些算法都有很著名的执行特性。它们可以给对象排序,删除它们,给它们记数,比较,找出特殊的对象,把它们合并到另一个容器中,以及执行其他有用的操作。
http://www.yesky.com/255/1910755.shtml
还有一种解释:
什么是STL?
STL代表科学和技术素养,但这个短语的背后隐藏的重要意义是对所有人而言。
STL也许可以简单地视为一个哲学观点,但决不仅仅如此。它包括了一套完整的教育方法,这个方法包含生活中的科学技术和不仅是学校师生的还有普通市民和政治家在内的所有人的思想。
为了达到普及科学技术的要求,科学技术的排它性和教师\科学家对科学教育的态度要根本转变。
课堂中的科学教育要从教师为主导、以教学大纲为核心的教育方式中解脱出来,代之以学生为中心来设计、指导和进行组织教学。为了使学生全身心投入学习动机是非常重要的而且这将只有在科学技术成为学生日常生活的需要时才能得到激发。
考虑到这些,我们现在是现代世界的一部分,这种意识比以前更为强烈,知识的获取与事实的记忆日益无关。一个微型移动电话能够直接接入因特网。这是能够在我们的指尖表达出一些事实信息。结果是学生在大量的事实学习(这是很快过时的知识)的思维负担是明显无意义的。
一旦这些负担被减轻了,全体学生亲自感受科学和技术的潜能就能被发掘出来。科学和技术不再被看作仅仅是’最聪明的’学生的宝贝。批判性思维得到解放。这些能揭示挑战不可靠信息和无确实根据的个人观点的思维方法,不管这些观点是来自’专家’,还是广告代理商或者政治家们。
现存的许多科学技术的排它性营造了道德和价值观来自于艺术和人文的氛围。实际上许多当前

Ⅱ stl是什么文件

STL = Standard Template Library,标准模板库,惠普实验室开发的一系列软件的统称。它是由Alexander Stepanov、Meng Lee和David R Musser在惠普实验室工作时所开发出来的。这可能是一个历史上最令人兴奋的工具的最无聊的术语。从根本上说,STL是一些“容器”的集合,这些“容器”有list,vector,set,map等,STL也是算法和其他一些组件的集合。这里的“容器”和算法的集合指的是世界上很多聪明人很多年的杰作。STL的目的是标准化组件,这样就不用重新开发,可以使用现成的组件。STL现在是C++的一部分,因此不用额外安装什么。

目录

标准模板库算法
容器
迭代器
科学和技术素养
司太立特合金
中国星际战队联赛
北京大学国际法学院
一种3D模型文件格式
台达PLC命令
梦幻西游门派
操作应用标准模板库 算法
容器
迭代器
科学和技术素养
司太立特合金
中国星际战队联赛
北京大学国际法学院
一种3D模型文件格式
台达PLC命令
梦幻西游门派
操作应用展开 编辑本段标准模板库
STL被内建在你的编译器之内。 在C++标准中,STL被组织为下面的13个头文件:<algorithm>、<deque>、<functional>、<iterator>、<vector>、<list>、<map>、<memory>、<numeric>、<queue>、<set>、<stack>和<utility>。
算法
大家都能取得的一个共识是函数库对数据类型的选择对其可重用性起着至关重要的作用。举例来说,一个求方根的函数,在使用浮点数作为其参数类型的情况下的可重用性肯定比使用整型作为它的参数类性要高。而C++通过模板的机制允许推迟对某些类型的选择,直到真正想使用模板或者说对模板进行特化的时候,STL就利用了这一点提供了相当多的有用算法。它是在一个有效的框架中完成这些算法的——你可以将所有的类型划分为少数的几类,然后就可以在模版的参数中使用一种类型替换掉同一种类中的其他类型。 STL提供了大约100个实现算法的模版函数,比如算法for_each将为指定序列中的每一个元素调用指定的函数,stable_sort以你所指定的规则对序列进行稳定性排序等等。这样一来,只要我们熟悉了STL之后,许多代码可以被大大的化简,只需要通过调用一两个算法模板,就可以完成所需要的功能并大大地提升效率。 算法部分主要由头文件<algorithm>,<numeric>和<functional>组成。<algorithm>是所有STL头文件中最大的一个(尽管它很好理解),它是由一大堆模版函数组成的,可以认为每个函数在很大程度上都是独立的,其中常用到的功能范围涉及到比较、交换、查找、遍历操作、复制、修改、移除、反转、排序、合并等等。<numeric>体积很小,只包括几个在序列上面进行简单数学运算的模板函数,包括加法和乘法在序列上的一些操作。<functional>中则定义了一些模板类,用以声明函数对象。
容器
在实际的开发过程中,数据结构本身的重要性不会逊于操作于数据结构的算法的重要性,当程序中存在着对时间要求很高的部分时,数据结构的选择就显得更加重要。 经典的数据结构数量有限,但是我们常常重复着一些为了实现向量、链表等结构而编写的代码,这些代码都十分相似,只是为了适应不同数据的变化而在细节上有所出入。STL容器就为我们提供了这样的方便,它允许我们重复利用已有的实现构造自己的特定类型下的数据结构,通过设置一些模版类,STL容器对最常用的数据结构提供了支持,这些模板的参数允许我们指定容器中元素的数据类型,可以将我们许多重复而乏味的工作简化。 容器部分主要由头文件<vector>,<list>,<deque>,<set>,<map>,<stack>和<queue>组成。对于常用的一些容器和容器适配器(可以看作由其它容器实现的容器),可以通过下表总结一下它们和相应头文件的对应关系。 数据结构 描述 实现头文件
向量(vector) 连续存储的元素 <vector>
列表(list) 由节点组成的双向链表,每个结点包含着一个元素 <list>
双队列(deque) 连续存储的指向不同元素的指针所组成的数组 <deque>
集合(set) 由节点组成的红黑树,每个节点都包含着一个元素,节点之间以某种作用于元素对的谓词排列,没有两个不同的元素能够拥有相同的次序 <set>
多重集合(multiset) 允许存在两个次序相等的元素的集合 <set>
栈(stack) 后进先出的值的排列 <stack>
队列(queue) 先进先出的值的排列 <queue>
优先队列(priority_queue) 元素的次序是由作用于所存储的值对上的某种谓词决定的的一种队列 <queue>
映射(map) 由{键,值}对组成的集合,以某种作用于键对上的谓词排列 <map>
多重映射(multimap) 允许键对有相等的次序的映射 <map>

迭代器
下面要说的迭代器从作用上来说是最基本的部分,可是理解起来比前两者都要费力一些(至少笔者是这样)。软件设计有一个基本原则,所有的问题都可以通过引进一个间接层来简化,这种简化在STL中就是用迭代器来完成的。概括来说,迭代器在STL中用来将算法和容器联系起来,起着一种黏和剂的作用。几乎STL提供的所有算法都是通过迭代器存取元素序列进行工作的,每一个容器都定义了其本身所专有的迭代器,用以存取容器中的元素。 迭代器部分主要由头文件<utility>,<iterator>和<memory>组成。<utility>是一个很小的头文件,它包括了贯穿使用在STL中的几个模板的声明,<iterator>中提供了迭代器使用的许多方法,而对于<memory>的描述则十分的困难,它以不同寻常的方式为容器中的元素分配存储空间,同时也为某些算法执行期间产生的临时对象提供机制,<memory>中的主要部分是模板类allocator,它负责产生所有容器中的默认分配器。

Ⅲ STL是什么

什么是STL呢?STL就是Standard Template Library,标准模板库。这可能是一个历史上最令人兴奋的工具的最无聊的术语。从根本上说,STL是一些“容器”的集合,这些“容器”有list,vector,set,map等,STL也是算法和其他一些组件的集合。这里的“容器”和算法的集合指的是世界上很多聪明人很多年的杰作。

STL的目的是标准化组件,这样就不用重新开发,可以使用现成的组件。STL现在是C++的一部分,因此不用额外安装什麽。它被内建在你的编译器之内。因为STL的list是一个简单的容器,所以我打算从它开始介绍STL如何使用。如果你懂得了这个概念,其他的就都没有问题了。另外,list容器是相当简单的,我们会看到这一点。

在本文中我们将会看到如何定义和初始化一个list,计算它的元素的数量,从一个list里查找元素,删除元素,和一些其他的操作。要作到这些,我们将会讨论两个不同的算法,STL通用算法都是可以操作不止一个容器的,而list的成员函数是list容器专有的操作。

这是三类主要的STL组件的简明纲要。STL容器可以保存对象,内建对象和类对象。它们会安全的保存对象,并定义我们能够操作的这个对象的接口。放在蛋架上的鸡蛋不会滚到桌上。它们很安全。因此,在STL容器中的对象也很安全。我知道这个比喻听起来很老土,但是它很正确。

STL算法是标准算法,我们可以把它们应用在那些容器中的对象上。这些算法都有很著名的执行特性。它们可以给对象排序,删除它们,给它们记数,比较,找出特殊的对象,把它们合并到另一个容器中,以及执行其他有用的操作。
http://www.yesky.com/255/1910755.shtml

还有一种解释:
什么是STL?

STL代表科学和技术素养,但这个短语的背后隐藏的重要意义是对所有人而言。

STL也许可以简单地视为一个哲学观点,但决不仅仅如此。它包括了一套完整的教育方法,这个方法包含生活中的科学技术和不仅是学校师生的还有普通市民和政治家在内的所有人的思想。

为了达到普及科学技术的要求,科学技术的排它性和教师\科学家对科学教育的态度要根本转变。

课堂中的科学教育要从教师为主导、以教学大纲为核心的教育方式中解脱出来,代之以学生为中心来设计、指导和进行组织教学。为了使学生全身心投入学习动机是非常重要的而且这将只有在科学技术成为学生日常生活的需要时才能得到激发。

考虑到这些,我们现在是现代世界的一部分,这种意识比以前更为强烈,知识的获取与事实的记忆日益无关。一个微型移动电话能够直接接入因特网。这是能够在我们的指尖表达出一些事实信息。结果是学生在大量的事实学习(这是很快过时的知识)的思维负担是明显无意义的。

一旦这些负担被减轻了,全体学生亲自感受科学和技术的潜能就能被发掘出来。科学和技术不再被看作仅仅是’最聪明的’学生的宝贝。批判性思维得到解放。这些能揭示挑战不可靠信息和无确实根据的个人观点的思维方法,不管这些观点是来自’专家’,还是广告代理商或者政治家们。

现存的许多科学技术的排它性营造了道德和价值观来自于艺术和人文的氛围。实际上许多当前

Ⅳ 初识电脑对电脑中的英文不了解.可以告诉一些常用的常见的电脑术语么

一群性质相近同的「东西」,如果译名一贯,阅读的感觉就很好。
一贯性的术语,扩充性高,延伸性高,系统化高。
● 我喜欢「式」:
constructor 建构式
declaration 宣告式
definition 定义式
destructor 解构式
expression 算式(运算式)
function 函式
pattern 范式、模式、样式
program 程式
signature 标记式

● 我喜欢「件」:(这是个弹性非常大的可组合字)
assembly (装)配件
component 组件
construct 构件
control 控件
event 事件
hardware 硬件
object 物件
part 零件、部件
singleton 单件
software 软件
work 工件、机件

● 我喜欢「器」:
adapter 配接器
allocator 配置器
compiler 编译器
container 容器
iterator 迭代器
linker 联(连)结器
listener 监听器

● 我喜欢「别」:
class 类别
type 型别

● 我喜欢「化」:
generalized 泛化
specialized 特化
overloaded 多载化(重载)

● 我喜欢「型」:
polymorphism 多型
genericity 泛型

● 我喜欢「程」:
process 行程(or 进程,大陆用语)
thread 线程(大陆用语)
programming 编程

●英中繁简编程术语对照
英文 繁体译词
(有些是侯捷个人喜好,普及与否难说) 大陆惯用术语
---------------------------------------------------------------------------------------
#define 定义 预定义
abstract 抽象的 抽象的
abstraction 抽象体、抽象物、抽象性 抽象体、抽象物、抽象性
access 存取、取用 存取、访问
access function 存取函式 存取函数
activate
active
adapter 配接器 适配器
address 位址 地址
address space 位址空间,定址空间
address-of operator 取址运算子 取地址运算符
aggregation 聚合
algorithm 演算法 算法
allocate 配置 分配
allocator (空间)配置器 分配器
application 应用程式 应用、应用程序
application framework 应用程式框架、应用框架 应用程序框架
argument 引数(传给函式的值)。叁见 parameter 叁数、实质叁数、实叁、自变量
array 阵列 数组
arrow operator arrow(箭头)运算子 箭头运算符
assembly 配件
assembly language 组合语言 汇编语言
assign 指派、指定、设值、赋值 赋值
assignment 指派、指定 赋值、分配
assignment operator 指派(赋值)运算子 = 赋值运算符
associated 相应的、相关的 相关的、关联、相应的
associative container 关联式容器(对应 sequential container) 关联式容器
atomic 不可分割的 原子的
attribute 属性 特性
background 背景 背景(用於图形着色)
后台(用於行程)
base class 基础类别 基类
base type 基础型别 (等同於 base class)
batch 批次(意思是整批作业) 批处理
best viable function 最佳可行函式 最佳可行函式
(从 viable functions 中挑出的最佳吻合者)
binary search 二分搜寻法 二分查找
binary tree 二元树 二叉树
binary operator 二元运算子 二元运算符
binding 系结 绑定
bit 位元 位
bit field 位元栏 ? 位域
bitmap 位元图 ? 位图
bitwise 以 bit 为单元逐一┅ ?
bitwise 以 bit 为单元进行复制;位元逐一复制 位拷贝
block 区块 块、区块、语句块
boolean 布林值(真假值,true 或 false) 布尔值
border 边框、框线 边框
brace(curly brace) 大括弧、大括号 花括弧、花括号
bracket(square brakcet) 中括弧、中括号 方括弧、方括号
breakpoint 中断点 断点
build-in 内建 内置
bus 汇流排
byte 位元组(由 8 bits 组成) 字节
cache 快取 高速缓存
call 呼叫、叫用 调用
callback 回呼 回调
call operator call(函式呼叫)运算子 () 调用运算符
(同 function call operator)
candidate function 候选函式 候选函数
(在函式多载决议程序中出现的候选函式)
chain 串链(例 chain of function calls) 链
character 字元 字符
check box 核取方块 (i.e. check button) 复选框
check button 方钮 (i.e. check box) 复选按钮
child class 子类别(或称为derived class, subtype) 子类
class 类别 类
class body 类别本体 类体 ?
class declaration 类别宣告、类别宣告式 类声明
class definition 类别定义、类别定义式 类定义
class derivation list 类别衍化列 类继承列表
class head 类别表头 类头 ?
class hierarchy 类别继承体系, 类别阶层 类层次体系
class library 类别程式库、类别库 类库
class template 类别模板、类别范本 类模板
class template partial specializations
类别模板偏特化 类模板部分特化
class template specializations
类别模板特化 类模板特化
cleanup 清理、善后 清理、清除
client 客端、客户端、用户端 客户端
client-server 主从架构 客户/服务器
clipboard 剪贴簿 剪贴板
clone 复制 克隆
(易与 混淆)
collection 群集 集合 ?
combo box 复合方块、复合框 组合框
command line 命令列 命令行
(系统文字模式下的整行执行命令)
communication 通讯 通讯
compile time 编译期 编译期、编译时
compiler 编译器 编译器
component 组件 组件
composition 复合、合成、组合 组合
computer 电脑、计算机 计算机、电脑
concrete 具象的 实在的
concurrent 并行 并发
configuration 组态 配置
container 容器 容器
(存放资料的某种结构如 list, vector...)
context 背景关系、周遭环境、上下脉络 环境、上下文
control 控制元件、控件 控件
const 常数(constant 的缩写,C++ 关键字)
constant 常数(相对於 variable) 常量、常数
constructor(ctor) 建构式 构造函数、构造器
(与class 同名的一种 member functions)
复制、拷贝 拷贝
cover 涵盖 覆盖
create 产生、生成 创建、生成
creation 产生、生成 创建、生成
data 资料 数据
data member 资料成员、成员变数 数据成员、成员变量
data structure 资料结构 数据结构
datagram 资料元 数据报文
dead lock 死结 死锁
debug 除错 调试
declaration 宣告、宣告式 声明
dection 推导(例:template argument dection) 推导、推断
default 预设 缺省、默认
definition 定义、定义区、定义式 定义
delegate 委派、委托、委任
delegation (同上)
dereference 提领(取出指标所指物体的内容) 解叁考
dereference operator dereference(提领)运算子 * 解叁考算符
derived class 衍生类别 派生类
design by contract 契约式设计
design pattern 设计样式 设计模式
※ 最近我比较喜欢「设计范式」一词
destructor(dtor) 解构式 析构函数、析构器
device 装置、设备 设备
dialog 对话窗、对话盒 对话框
directive 指令(例:using directive) (编译)指示符
directory 目录 目录
distributed computing 分布式计算 (分布式电算) 分布式计算
分散式计算 (分散式电算)
document 文件 文档
dot operator dot(句点)运算子 . (圆)点运算符
driver 驱动程式 驱动(程序)
dynamic binding 动态系结 动态绑定
efficiency 高效、效率、效能
entity 物体 实体、物体
encapsulation 封装 封装
enclosing class 外围类别(与巢状类别 nested class 有关)外围类
enum (enumeration) 列举(一种 C++ 资料型别) 枚举
enumerators 列举元(enum 型别中的成员) 枚举成员、枚举器
equality operator equality(等号)运算子 == 等号运算符
evaluate 评估、求值、核定 评估
event 事件 事件
event driven 事件驱动的 事件驱动的
exception 异常情况 异常
exception declaration 异常宣告(ref. C++ Primer 3/e, 11.3) 异常声明
exception handling 异常处理、异常处理机制 异常处理、异常处理机制
exception specification 异常规格(ref. C++ Primer 3/e, 11.4) 异常规范
exit 退离(指离开函式时的那一个执行点) 退出
explicit 明白的、明显的、显式 显式
export 汇出 引出、导出
expression 运算式、算式 表达式
facility 设施、设备 设施、设备
feature 特性
field 栏位 字段
file 档案 文件
firmware 韧体 固件
flush 清理、扫清 刷新
form 表单(programming 用语)
formal parameter 形式叁数 形式叁数
forward declaration 前置宣告 前置声明
fractal 碎形 分形
framework 框架 框架
full specialization 全特化(ref. partial specialization) ?
function 函式、函数 函数
function call operator 同 call operator
function object 函式物件(ref. C++ Primer 3/e, 12.3) 函数对象
function overloaded resolution
函式多载决议程序 函数重载解决(方案)
function template 函式模板、函式范本 函数模板
functor 仿函式 仿函式、函子
generic 泛型、一般化的 一般化的、通用的、泛化
generic algorithm 泛型演算法 通用算法
global 全域性的(对应於 local) 全局的
global scope resolution operator
全域生存空间(范围决议)运算子 :: 全局范围解析运算符
group 群组 ?
group box 群组方块 分组框
hand shaking 握手协商
handle 识别码、识别号、号码牌、权柄 句柄
handler 处理常式 处理函数
hardware 硬体 硬件
hash table 杂凑表 哈希表、散列表
header file 表头档、标头档 头文件
heap 堆积 堆
hierarchy 阶层体系 层次结构(体系)
hook 挂钩 钩子
hyperlink 超链结 超链接
IDE 整合开发环境 集成开发环境
identifier 识别字、识别符号 标识符
immediate base 直接的(紧临的)上层 base class。 直接上层基类
immediate derived 直接的(紧临的)下层 derived class。 直接下层派生类
implement 实作 实现
implementation 实作品、实作物、实作体、实作码 实现
implicit 隐喻的、暗自的、隐式 隐式
import 汇入 导入
increment operator 累加运算子 ++ 增加运算符
information 资讯 信息
infrastructure 公共基础建设
inheritance 继承、继承机制 继承、继承机制
inline 行内 内联
inline expansion 行内展开 内联展开
initialization 初始化(动作) 初始化
initialization list 初值列 初始值列表
initialize 初始化 初始化
instance 实体 实例
(根据某种表述而实际产生的「东西」)
instantiated 具现化、实体化(常应用於 template) 实例化
instantiation 具现体、具现化实体(常应用於 template) 实例
integrate 整合 集成
interface 介面 接口
invoke 唤起 调用
iterate 迭代(回圈一个轮回一个轮回地进行) 迭代
iterative 反覆的,迭代的
iterator 迭代器(一种泛型指标) 迭代器
iteration 迭代(回圈每次轮回称为一个 iteration) 迭代
item 项目、条款 项、条款、项目
laser 雷射 激光
level 阶 层
例 high level 高阶 高层
library 程式库、函式库 库、函数库
lifetime 生命期、寿命 生命期、寿命
link 联结、连结 连接
linker 联结器、连结器 连接器
literal constant 字面常数(例 3.14 或 "hi" 这等常数值) 字面常数
list 串列(linked-list) 列表、表、链表
list box 列表方块、列表框 列表框
load 载入 装载、加载
loader 载入器 装载器、载入器
local 区域性的(对应於 global) 局部的
lock 机锁
loop 回圈 循环
lvalue 左值 左值
macro 巨集 宏
maintain 维护 维护
manipulator 操纵器(iostream 预先定义的一种东西) 操纵器
mechanism 机制 机制
member 成员 成员
member access operator 成员取用运算子(有 dot 和 arrow 两种) 成员存取运算符
member function 成员函式 成员函数
member initialization list
成员初值列 成员初始值列表
memberwise 以 member 为单元┅、members 逐一┅ 以成员为单位
memberwise 以 members 为单元逐一复制
memory 记忆体 内存
menu 表单、选单 菜单
message 讯息 消息
message based 以讯息为基础的 基於消息的
message loop 讯息回圈 消息环
method (java) 方法、行为
micro 微 微
modeling 模塑
modeling language 塑模语言,建模语言
mole 模组 模块
most derived class 最末层衍生类别 最底层的派生类
mouse 滑鼠 鼠标
mutable 可变的 可变的
multi-tasking 多工 多任务
namespace 命名空间 名字空间、命名空间
nested class 巢状类别 嵌套类
object 物件 对象
object based 以物件为基础的 基於对象的
object model 物件模型 对象模型
object oriented 物件导向的 面向对象的
online 线上 在线
operand 运算元 操作数
operating system (OS)

Ⅳ 什么是STL

它是由Alexander Stepanov、Meng Lee和David R Musser在惠普实验室工作时所开发 出来的。现在虽说它主要出现在C++中,但在被引入C++之前该技术就已经存在了很长的 一段时间。 STL的代码从广义上讲分为三类:algorithm(算法)、container(容器)和iterator( 迭代器),几乎所有的代码都采用了模板类和模版函数的方式,这相比于传统的由函数 和类组成的库来说提供了更好的代码重用机会。在C++标准中,STL被组织为下面的13个 头文件:、、、、、、、、、、、和。以下笔者就简单 介绍一下STL各个部分的主要特点。 二、算法 大家都能取得的一个共识是函数库对数据类型的选择对其可重用性起着至关重要的作用 。举例来说,一个求方根的函数,在使用浮点数作为其参数类型的情况下的可重用性肯 定比使用整型作为它的参数类性要高。而C++通过模板的机制允许推迟对某些类型的选择 ,直到真正想使用模板或者说对模板进行特化的时候,STL就利用了这一点提供了相当多 的有用算法。它是在一个有效的框架中完成这些算法的——你可以将所有的类型划分为 少数的几类,然后就可以在模版的参数中使用一种类型替换掉同一种类中的其他类型。 STL提供了大约100个实现算法的模版函数,比如算法for_each将为指定序列中的每一个 元素调用指定的函数,stable_sort以你所指定的规则对序列进行稳定性排序等等。这样 一来,只要我们熟悉了STL之后,许多代码可以被大大的化简,只需要通过调用一两个算 法模板,就可以完成所需要的功能并大大地提升效率。 算法部分主要由头文件,和组成。是所 有STL头文件中最大的一个(尽管它很好理解),它是由一大堆模版函数组成的,可以认 为每个函数在很大程度上都是独立的,其中常用到的功能范围涉及到比较、交换、查找 、遍历操作、复制、修改、移除、反转、排序、合并等等。体积很小,只包括 几个在序列上面进行简单数学运算的模板函数,包括加法和乘法在序列上的一些操作。 中则定义了一些模板类,用以声明函数对象。 三、容器 在实际的开发过程中,数据结构本身的重要性不会逊于操作于数据结构的算法的重要性 ,当程序中存在着对时间要求很高的部分时,数据结构的选择就显得更加重要。 经典的数据结构数量有限,但是我们常常重复着一些为了实现向量、链表等结构而编写 的代码,这些代码都十分相似,只是为了适应不同数据的变化而在细节上有所出入。ST L容器就为我们提供了这样的方便,它允许我们重复利用已有的实现构造自己的特定类型 下的数据结构,通过设置一些模版类,STL容器对最常用的数据结构提供了支持,这些模 板的参数允许我们指定容器中元素的数据类型,可以将我们许多重复而乏味的工作简化 。 容器部分主要由头文件,,,,,和组成 。对于常用的一些容器和容器适配器(可以看作由其它容器实现的容器),可以通过下 表总结一下它们和相应头文件的对应关系。 数据结构 描述 实现头文件 向量(vector) 连续存储的元素 列表(list) 由节点组成的双向链表,每个结点包含着一个元素 双队列(deque) 连续存储的指向不同元素的指针所组成的数组 集合(set) 由节点组成的红黑树,每个节点都包含着一个元素,节点之间以某种作用于 元素对的谓词排列,没有两个不同的元素能够拥有相同的次序 多重集合(multiset) 允许存在两个次序相等的元素的集合 栈(stack) 后进先出的值的排列 队列(queue) 先进先出的执的排列 优先队列(priority_queue) 元素的次序是由作用于所存储的值对上的某种谓词决定的的 一种队列 映射(map) 由{键,值}对组成的集合,以某种作用于键对上的谓词排列 多重映射(multimap) 允许键对有相等的次序的映射 四、迭代器 下面要说的迭代器从作用上来说是最基本的部分,可是理解起来比前两者都要费力一些 (至少笔者是这样)。软件设计有一个基本原则,所有的问题都可以通过引进一个间接 层来简化,这种简化在STL中就是用迭代器来完成的。概括来说,迭代器在STL中用来将 算法和容器联系起来,起着一种黏和剂的作用。几乎STL提供的所有算法都是通过迭代器 存取元素序列进行工作的,每一个容器都定义了其本身所专有的迭代器,用以存取容器 中的元素。 迭代器部分主要由头文件,和组成。是一个很小 的头文件,它包括了贯穿使用在STL中的几个模板的声明,中提供了迭代器使 用的许多方法,而对于的描述则十分的困难,它以不同寻常的方式为容器中的 元素分配存储空间,同时也为某些算法执行期间产生的临时对象提供机制,中的 主要部分是模板类allocator,它负责产生所有容器中的默认分配器。 五、对初学者学习STL的一点建议 对于之前不太了解STL的读者来说,上面的文字只是十分概括地描述了一下STL的框架, 对您理解STL的机制乃至使用STL所起到的帮助微乎甚微,这不光是因为深入STL需要对C ++的高级应用有比较全面的了解,更因为STL的三个部分算法、容器和迭代器三部分是互 相牵制或者说是紧密结合的。从概念上讲最基础的部分是迭代器,可是直接学习迭代器 会遇到许多抽象枯燥和繁琐的细节,然而不真正理解迭代器又是无法直接进入另两部分 的学习的(至少对剖析源码来说是这样)。可以说,适应STL处理问题的方法是需要花费 一定的时间的,但是以此为代价,STL取得了一种十分可贵的独立性,它通过迭代器能在 尽可能少地知道某种数据结构的情况下完成对这一结构的运算,所以下决心钻研STL的朋 友们千万不要被一时的困难击倒。其实STL运用的模式相对统一,只要适应了它,从一个 STL工具到另一个工具,都不会有什么大的变化。 对于STL的使用,也普遍存在着两种观点。第一种认为STL的最大作用在于充当经典的数 据结构和算法教材,因为它的源代码涉及了许多具体实现方面的问题。第二种则认为ST L的初衷乃是为了简化设计,避免重复劳动,提高编程效率,因此应该是“应用至上”的 ,对于源代码则不必深究。笔者则认为分析源代码和应用并不矛盾,通过分析源代码也 能提高我们对其应用的理解,当然根据具体的目的也可以有不同的侧重。

阅读全文

与特化头文件相关的资料

热点内容
ai启动配置文件 浏览:664
汽车故障诊断数据采集有什么用 浏览:594
手机对手机传文件最快 浏览:103
文件预览窗格图片怎么放大 浏览:699
自动编程适用于哪些情况 浏览:686
乐高编程课是学什么的幼儿园 浏览:880
照片删除了在哪个文件夹 浏览:513
电脑怎么把文件图片变大 浏览:565
红米1s蓝牙能升级吗 浏览:222
javadbx 浏览:486
xls文件转sel文件 浏览:300
手机系统老是升级失败是怎么回事 浏览:456
求个能用的苹果账号 浏览:419
如何快速把文件夹里重复的歌删除 浏览:606
如何用编程求鸡兔同笼 浏览:604
word2007图片选择 浏览:630
特化头文件 浏览:683
数据库系统概论萨师煊王珊 浏览:381
信用玩家app更名为什么 浏览:720
caffe对应的vs版本 浏览:205

友情链接