学java有必要学STL吗

如题,介绍一下stl。... 如题,介绍一下stl。 展开
 我来答
wcghoho
2008-08-24 · TA获得超过1701个赞
知道小有建树答主
回答量:146
采纳率:0%
帮助的人:126万
展开全部
一、STL简介
STL(Standard Template Library,标准模板库)是惠普实验室开发的一系列软件的统称。它是由Alexander Stepanov、Meng Lee和David R Musser在惠普实验室工作时所开发出来的。现在虽说它主要出现在C++中,但在被引入C++之前该技术就已经存在了很长的一段时间。
STL的代码从广义上讲分为三类:algorithm(算法)、container(容器)和iterator(迭代器),几乎所有的代码都采用了模板类和模版函数的方式,这相比于传统的由函数和类组成的库来说提供了更好的代码重用机会。在C++标准中,STL被组织为下面的13个头文件:<algorithm>、<deque>、<functional>、<iterator>、<vector>、<list>、<map>、<memory>、<numeric>、<queue>、<set>、<stack>和<utility>。以下笔者就简单介绍一下STL各个部分的主要特点。
二、算法
大家都能取得的一个共识是函数库对数据类型的选择对其可重用性起着至关重要的作用。举例来说,一个求方根的函数,在使用浮点数作为其参数类型的情况下的可重用性肯定比使用整型作为它的参数类性要高。而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也许可以简单地视为一个哲学观点,但决不仅仅如此。它包括了一套完整的教育方法,这个方法包含生活中的科学技术和不仅是学校师生的还有普通市民和政治家在内的所有人的思想。

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

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

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

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

现存的许多科学技术的排它性营造了道德和价值观来自于艺术和人文的氛围。实际上许多当前最亟待解决的道德和价值观问题就包含了科学和技术,而且在现实中存在着,在民主社会,公众的舆论是重要的。

基于科学素养的教育目标不是培养科学家,而是培养具有科学素养的公民。科学技术意识为培养高素质的劳动力、有政治觉悟的公民提供基础同时也为那些打算成为科学家、工程师或技术员的人提供基础。

TS2000+(技术科学)打算为小学教师提供实用性的入门知识。其中为课堂教学设计了许多挑战和主意。根据他们自己的经验,作者讨论活动的可能结果,但是从不直接给出’答案’。这些案例可以被每个人自由应用并且按照他们的愿望进行改编。

TS2000(技术科学)是非说明性的而且在科学素养观上看来起来是领先于新时代的。

网络游戏——梦幻西游中的门派:狮驼岭(STL)
魔族门派—狮驼岭
地点:南瞻部洲外
师傅:大大王
收徒条件:魔族,男性
参考点数分配:体质、力量、耐力。
门派特色:每次训养召唤兽所提升的忠诚度加倍;召唤兽在战斗中死亡不掉忠诚;武器耐久度的消耗速度为普通耐久消耗速度的70%。
门派描述:骷髅若岭,骸骨成林,狮驼岭妖魔以狠辣的出手和无情的行事作风令人闻风丧胆,尤其狂暴的时候他们往往会变身成兽型,给予敌人致命的咬啮和袭击!另外狮驼岭门下和灵兽有天生的亲近关系,他们驯养的召唤兽通常都十分忠诚,也是战斗中的好帮手。

门派技能 技能名称 学习效果 包含法术

魔兽神功 变身,魔兽啸天
生死搏 按技能等级提高伤害力 象形,鹰击,狮搏,天魔解体
训兽诀 按技能等级提高灵力 威慑
阴阳二气诀 定心术,魔息术
狂兽诀 连环击
大鹏展翅 按技能等级提高躲避力 振翅千里
魔兽反噬 按技能等级提高防御力 极度疯狂

门派法术 法术名称 法术介绍

象形 功效:攻击单人并令其下回合无法行动,用后次回合无法使用法术
使用条件:生死搏技能达到20级,变身后使用,用后取消变身效果
消耗:50点魔法

鹰击 功效:攻击对方多人,使用后需要休息1回合
使用条件:生死搏技能达到30级,变身状态下才能使用,不允许连续两回合使用。
消耗:30点魔法,攻击多人时消耗增加

狮搏 功效:以高于平时的伤害力攻击对方单人
使用条件:生死搏技能达到20级,变身状态下才能使用
消耗:30点魔法

威慑 功效:令怪物或玩家召唤兽无法行动,不能对玩家使用
使用条件:训兽诀技能达到15级
消耗:20点魔法

变身 功效:临时提高伤害力,是使用象形、鹰击、狮搏和连环击的前提
使用条件:魔兽神功技能达到20级
消耗:20点魔法

魔兽啸天 功效:克制天宫弟子的必杀技,使用后需要休息一回合
使用条件:魔兽神功技能达到25级,人物等级达到20级
消耗:150点愤怒值

定心术 功效:战斗中临时提高自己的灵力
使用条件:阴阳二气诀技能达到40级
消耗:40点魔法

连环击 功效:疯狂地连续的攻击敌人
使用条件:狂兽诀技能达到30级,变身后使用。使用后需要休息一回合并取消变身效果
消耗:每次连击消耗30点魔法

振翅千里 功效:平时状态下使用,可以瞬间回到自己的门派
使用条件:大鹏展翅技能达到1级
消耗:10点气血和10点魔法

极度疯狂 功效:受到物理攻击时会自动反击敌人
使用条件:魔兽反噬技能达到20级
消耗:30点魔法

魔息术 功效:一定回合内恢复自身的魔法
使用条件:人物飞升且“阴阳二气诀”技能达到120级
消耗:20点魔法

天魔解体
功效:牺牲自己,一定几率重创对手,不能对怪物使用
使用条件:人物飞升且“生死搏”技能达到120级
消耗:30点魔法,当前气血<上限的30%时,复活后的当前回合无法使用
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式