华中科技大学硕士学位论文基于图论的道路平面设计研究与软件开发姓名:张军华申请学位级别:硕士专业:道路与铁道工程指导教师:吴小平20080601
摘要在国内市政工程建设中,道路平面设计是不可缺少的一部分。目前国内土木工程辅助设计软件其平面设计中还则存在着许多问题。这些软件重几何计算,轻数据结构;重单线,无系统,忽视了道路网的设计,没有将“带状问题”转换成“网状问题”来进行解决;重主线,无辅助线;软件中的图形对象只是简单对象,没有实体化,对象间没有任何关联,也没有横向、竖向的约束;并且计算慢,出错率高。故需要建立一个新的模型来解决上述问题。本文系统论述了图论以及约束模型在道路平面设计中的研究以及应用。本文的创新点在于:1、线元研究:可以任意在后台控制缓和曲线的坐标通式的余项,来控制缓和曲线的精度;突破了传统的缓和曲线的最大偏角为180度的极限,将最大偏角控制在900度;道路平面设计中的各种缓和曲线组合的算法进一步完善;2、模型建立:建立基于图论的约束模型,打破了传统的静态几何模型,适应动态设计和再设计的需求;3、编程思想:运用最新计算机编程理念(面向过程→面向对象→泛型)与STL,BGL和计算几何库四者结合,突破了传统的面向对象理念,提高计算速度,并且建立一个可以面向多个CAD的平台;本课题的研究成果,具有很强的现实意义。线元的深入研究满足了市政工程设计中的需求,提高了设计精确度。而基于图论的约束模型的建立将大大突破现行道路设计软件的表达瓶颈,实现动态设计与再设计的需求,同时将推动道路设计理论的进一步研究。关键词:道路平面设计;缓和曲线;图论;泛型编程;约束图模型I
AbstractTheRoadPlaneDesignisanindispensablepartinthemunicipalengineering.Atpresent,therearemanyproblemsintheroadplanedesignofthecivilengineeringaideddesignsoftwareinourcountry.Thesesoftwarepayanimportantattentiontogeometriccalculation,ignorethedatastructure;emphasizesingleline,nosystem,ignorethedesignoftheroadnetwork,theysolvethe“zonal”problemsinsteadofconvertingtheminto“network”problems;emphasizemainline,noassistedline;Inthesesoftware,theobjectsofgrapharesimple、nohypostatization,andthereisnocorrelationamongthem,alsonotransverseorverticalconstrain,moreover,calculateslowly,therateoferrorishigh.Therefore,anewmodelshouldbesetuptosolveproblemsabove.Thispaperdescribedtheresearchandapplicationofgraphicandconstraintmodelintheroadplanedesignsystematically.Theinnovationsofthisarticleareasfollows:1、Theresearchoflinesegment:tocontroltheaccuracyofspiral,theremainderofgeneralformulaofitcanbecontrolledarbitrarilyinthebackstage;breakthroughtheotraditionallimitofmaximumdeflectionangleofspiral,whichis180C,andsetitattheodegreeof900C;thealgorithmofallkindsofspiralwasimprovedfurtherintheroadplanedesign;2、Theestablishmentofmodel:constraintsmodelwassetupbasedongraphictheory,breakthroughthetraditionalstaticgeometricmodel,meettheneedsofdynamicdesignandre-design;3、Thethinkingofprogramming:usingthecombinationoflatestconceptsofcomputerprogramming(Process-orientedprogramming→Object-Orientedprogram--ming→genericprogramming)、STL、BGLandcomputationalgeometrylibrary,breakthroughthetraditionalconceptsofObject-Oriented,improvecalculationspeed,andestablishamultiple-orientedCADplatform;Theresultsofresearchonthissubjecthaveastrongpracticalsignificance:thein-depthstudyoflinesegmentmeetstheneedofthedesignofmunicipalengineering,andasaresultdesignprecisionwasimproved;constraintmodelbasedongraphtheorywillII
greatlybreakthroughthebottleneckofexpressionofdomesticmunicipalsoftware,meettheneedsofdynamicdesignandre-design.Andatthesametimeitwillpromotethefurtherstudyofthetheoryofroaddesign.Keyword:RoadPlaneDesign;spiral;graphtheory;genericprogramming;ConstraintgraphmodelIII
独创性声明本人声明所呈交的学位论文是我个人在导师的指导下进行的研究工作及取得的研究成果。近我所知,除文中已标明引用的内容外,本论文不包含任何其他人或集体已经发表或撰写过的研究成果。对本文的研究做出贡献的个人和集体,均已在文中以明确方式标明。本人完全意识到本声明的法律结果由本人承担。学位论文作者签名:日期:年月日学位论文版权使用授权书本学位论文作者完全了解学校有关保留、使用学位论文的规定,即:学校有权保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授权华中科技大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。保密□,在______年解密后适用本授权数。本论文属于不保密□。(请在以上方框内打“√”)学位论文作者签名:指导教师签名:日期:年月日日期:年月日
1绪论1.1研究的背景1.1.1计算机辅助工程(CAE)和计算机辅助设计(CAD)技术介绍计算机辅助工程(ComputerAidedEngineering)简称CAE,它是把计算机应用于工程规划、设计、管理等的统称。它以其巨大的社会和经济效益在工程实践中占[1]据越来越重要的地位。在设计过程中,利用计算机作为工具,帮助工程师进行设计的一切实用技术的总和称为计算机辅助设计(ComputerAidedDesign)简称CAD。计算机辅助设计CAD[1]是属于计算机辅助工程CAE中重要的一项。计算机辅助工程,包括计算机辅助设计是近40年发展起来的一门新兴技术。随着计算机硬件和软件技术的巨大进步,CAE技术已成为工程实施及科学研究不可缺少的组成部分。CAE技术充分利用了计算机的高速运算、数据处理和绘图模拟等能力,不仅可以缩短工程规划、设计和施工的周期,减少工程技术人员的繁杂劳动,而且能够提高工程质量、降低成本;同时,CAE技术也为科学研究的发展和教育的[1]现代化提供了方便的工具。计算机辅助设计CAD包括的内容很多,如:概念设计、优化设计、有限元分析、计算机仿真、计算机辅助绘图、计算机辅助设计过程管理等。在工程设计中,一般包括两种内容:带有创造性的设计(方案的构思、工作原理的拟定等)和非创造性的工作,如绘图、设计计算等。创造性的设计需要发挥人的创造性思维能力,创造出以前不存在的设计方案,这项工作一般应由人来完成。非创造性的工作是一些繁琐重复性的计算分析和信息检索,完全可以借助计算机来完成。一个好的计算机辅助设计系统既能充分发挥人的创造性作用,又能充分利用计算机的高速分析计算能[2,3]力,即要找到人和计算机的最佳结合点。计算机辅助设计CAD在工程领域中的应用有以下几个方面。建筑:方案设计、三维造型、建筑渲染图即概念设计、平面布景、建筑构造设计、小区规划、日照分析、室内装潢等;结构:有限元分析、结构平面设计、框架和排架结构计算和分析、高层结构分析、地基的基础设计、钢结构设计与加工;设备:水、电、暖等各种设1
备及管道设计;市政管线:自来水、污水排放、煤气、电力、暖气、通信等;市政建筑:城市规划、城市交通、道路高架、轻轨、地铁;交通工程:公路、桥梁、铁[2,3]路、航空、机场、港口、码头;水利工程:大坝、水渠、河海工程。1.1.2国内土木工程CAD的发展阶段介绍通过对国内土木工程CAD软件开发过程的研究,将国内土木工程CAD软件开发历程分为下面两个阶段:1、第一代土木工程CAD此阶段时间是在20世纪80年代后期到20世纪90年代前期,第一代土木工程CAD软件只能适用于设计方案已经基本确定,通过软件进行一些大量计算后直接驱动绘图仪绘图。这一代土木工程CAD软件只是作为绘图工具,后期设计方案修改十分不方便,只能通过修改数据后重新绘制图形。数据计算处理模块为这一代软件产品的设计重点。其特点:面向数据设计,只能由数据到图形。所采用的设计模型为用数组表达的线性链表。2、第二代土木工程CAD此阶段时间是在20世纪90年代后期到至今,在此段时间里,电脑硬件和软件技术飞速发展,这些高新技术的发展推动了CAD技术的现代化,出现了MiroStation、AutoCAD等优秀的CAD图形平台。第二代土木工程CAD就是基于CAD图形平台进行土木工程设计。这样便在第一代产品的基础上,利用CAD图形平台的图形数据库,完成了由图形到数据的逆操作,实现了数据和图形的双向交换。通过修改图形就可以完成设计数据的更新,即常说的所见即所得。图形修改处理模块为这一代软件产品的设计重点。第二代土木工程CAD的特点:面向数据和图形,数据和图形双向交换,重点是图形,实现所见即所得。设计模型仍为线性链表。链表一般只能表达线性对象,使得表达上存在局限性。1.1.3土木工程设计CAD软件软构件技术介绍[1]软构件技术是一种新的现代化的软件开发方法,也是土木工程学术界在CAD软件开发的历程中通过摸索和研究,认为是值得推荐的实用方法。软构件(Componentware)又称软组件、软件构件,是具有一定实际功能的、相2
对独立的、存在于某一系统而又不依赖于这一系统的、可以被相同的构件所替换的软件包。软构件是相对于由其所组成的软件系统而言的,相对于其它软件,软构件又可称为“构件软件(componentsoftware)”。通过软构件的组装集成开发完成的软件系统称为“构件化软件”,而通过软构件的组装集成来开发软件系统的技术则称为“软件构件化”。不同的软构件按照一定的规则可以组装成具有一定功能作用的“构件化软件”,组装后的“构件化软件”也可以成为其它系统的“软构件”,一个构件[1]软件也可以由更小的软构件所构成。[1]基于构件的开发方法(ComponentBasedDevelopment,简称CBD方法)又称构件化软件的开发方法,它是指软件的开发建立在已有的可重用构件的基础上,通过对已有构件的组装或集成,达到开发完成应用系统目的的一种软件开发方法。CBD方法是当今软件行业最新的一种软件开发方法,它大大提高了软件开发的效率和质量,必将引起一场软件行业的革命。1.1.4道路平面设计方法介绍随着计算机的功能越来越强,道路平面设计在道路设计中的应用也越来越广;同时随着我国的经济发展水平及速度的不断提高,对公路交通的发展也提出了更高的要求;高速公路、一级公路、汽车专用道等高等级公路的大规模建设,对传统简单平曲线技术方法提出了挑战;由此,众多道路专业工程师及相关教育科研人员对道路平面线形设计方法进行了大量的研究,也已经取得了很多有用的成果。目前道[1]路平面线形设计方法以达到了“丰富多彩”的境界:1、从定线的主导方法看:有直线型和曲线型两类方法;2、从曲线构造方法看:分为组合线形(直线、圆曲线、回旋线)构造法和样条曲线拟合法;[1,4~7]3、从具体应用方法看:有常规交点平曲线设计法、卵形曲线设计法、复合导线法、五单元导线法、模式法、积木法、动态交互式模式法、动态交互式积木法、线元法、固定/浮动/自由线元法、控制法、参数法、位移法、试算优化方法、三次样条曲线拟合法等;4、从曲线形式看:出现了从最早的单圆曲线到对称曲线、非对称曲线、拱形曲线;从复曲线到单卵形、双卵形及至多卵形曲线;还有S形曲线、C形曲线等;3
5、从适用对象看:有些以主线为主;有些以互通立交为主;有些立足于人机立交;有些侧重于计算;有些适合于构造初始线形;有些适合于交互修改;等等⋯1.2国内外的研究状况1.2.1国外研究情况取目前国外通用的土木工程设计CAD软件中下列三种作为调研对象:英国MXRoad软件;德国IB&T(IngenierbueroBasedow&TornowGmbH)有限公司开发的CARD/1系统;[8~9]美国Autodesk公司开发的CIVIL3D系列。英国Infrasoft公司于1998年推出新一代的大型土木工程MX软件,它为公路、铁路、水利工程、机场、场地工地已经露天矿山工程等土木工程提供勘测设计一体[10]化的解决方案。在平面设计里它的理论基础是采用了独特的“串”的概念。“串”是“点”的集合。该系统建立了多种形式的“串”线,每个串以标签、维和数码来表示。例如:等高线为一个二维串,形成每一根等高线的“点”的坐标是以标签的形式用数据记录在串的最前面。公路和铁路中的测站点、中心线、导线都用六维串来表达,串中每一个点的前面三个维是点的坐标,后面几个是沿串的桩号(或距离),然后是该串的方向角和曲率半径。在应用上,该软件可以实现动态的进行平面选线和纵断面设计,对于平面交叉口设计,采用的参数化图片界面导向设计模式进行转弯曲线和交通岛的设置。它也具备多种类型和方法进行缓和曲线自动设计。CARD/1软件自设图形平台,并建立独立完整的数据与图形编辑体系,由11个[11]模块组成。对于平面设计该软件有两个模块:平面图模块,平面线形设计模块。平面图模块是完全独立的,可用于土地,交通等规划和图形绘制。而平面线形设计模块可在平面图中对道路、铁道、渠道及相应路边线进行交互式图形设计。它的新特点是能在图形环境下构造轴线,进行各种轴线元素的图形设计。该软件的平面设计方法采用的是曲线法定线设计。对于平面交叉设计采用的模板化和参数化的方法提供交通岛模板,方便平面设计。AutodeskCivil3D能够在对象之间创建智能关系,使设计更改能够动态更新。4
其三维交互功能提供了更大的设计灵活性,可以使用土木工程模型中对象间的动态、实时交互功能,探讨概念方案并以更快的速度完成最终设计。这一特点源于智能的中央三维工程模型。该模型包含对象(如点、曲面、地块、道路和放坡)的核心几何图形和设计智能。另外,表格、对象标签和各种分析显示也用来表示模型。如果更改了模型中的任何一部分,所有与其相关的部分都会立即动态更新。它采用导线法和线元法进行道路平面路线布设,使用参数化的布局工具生成平面路线。1.2.2国内研究情况自1979年起,先后有同济大学、重庆交通学院与重庆公路研究所、交通部武汉第二公路勘察设计院、西安公路学院、上海铁道学院、西南交通大学、北方交通大学、铁道部铁路专业设计院等单位先后为公路和铁路的纵断面优化技术、公路及铁路的平面和空间线形优化技术等进行了研究,编制了各自的优化程序。这些程序经过试算,证明其优化效果是令人满意的,但至今还没有广泛地应用到实际的工程设[1]计中,有待于进一步的完善和应用开发。目前,国内生产中使用的国产软件有东南大学开发的道路与互通式立交ICAD及DICAD、EICAD系统;武汉城市建设学院开发的市政工程设计软件MECAD;交通部第二公路勘察设计院开发的微机公路路线设计;海德公司开发的HEAD软件系统以及各设计单位自行开发或基于AutoCAD支撑软件作二次开发的各种软件等。这些国内已有软件与国外优秀软件相比较,仍属于低水平、不完整和不稳定状态。在平面设计及软件开发上,很多地方不完善,甚至有的部分基本是空白,例如回旋线的开发。平面设计方法因为受到国外“曲线形设计法”的启发,我国发展了“模式法”,[1]“积木法”,“新的导线法”,“扩展的模式法”。在基于DEM的道路设计CAD系[12]统中,它将交点法、积木法等多种设计方法融为一体,使平纵横联动设计功能使设计效率更加提高,但与AutodeskCivil3D的智能动态更新还有很大的差距。且国内采用的是面向对象编程,其采用的存储模型是线性链表。1.2.3结论通过调研比较国内外专业软件,目前国内土木工程辅助设计软件还则存在着下5
面这些问题:1、重几何计算,轻数据结构:过多看重计算,很少考虑整体的数据结构,系统不稳定,出错几率大;2、重单线,无系统:目前软件过多的考虑一条道路线的设计情况,而忽视了道路网的设计。没有将“带状问题”转换成“网状问题”来进行解决;3、重主线,无辅助线:只考虑主线的设计,与主线相关联的对象却没有考虑。比如一条道路上的相交道路,相交管线,立交匝道等等;4、无约束,非实体化:软件中的图形对象只是简单对象,没有实体化,对象间没有任何关联,也没有横向、竖向的约束;5、重中心线,轻边线、纵断面线、横断面线等;6、计算慢,出错率高;7、操作不统一,界面复杂,思路不清晰:每使用一个软件都需要重新学习软件使用方法。各种软件之间数据不统一,程序无法通用,软件开发中没有使用软构件技术。以上的这些问题,就是国内第二代土木工程CAD软件的主要弊端。因此目前迫切需要打破第二代土木工程CAD软件开发瓶颈,完善构件化土木工程CAD软件开发方法的理论,建立基于土木工程统一数据结构模型,并尝试使用软构件技术进行专业软件开发,实现快速高效系统完整的软件系统,以满足动态设计要求和再设计的需求。1.3论文研究的目的和内容1.3.1研究目的在对道路设计中平面,纵断面,横断面,交叉口,市政管线的平面和纵断面的设计模型的分析和总结的基础上,运用最新计算机编程理念(面向过程→面向对象→泛型),把它们统一抽象为约束图模型。与此同时完善平面的线元研究,减少程序的时间复杂度和空间复杂度,以满足平面设计的需要。6
1.3.2研究内容1、道路平面设计软件的几个库的开发:分析标准模板库,计算几何库,BGL库,这三个库在AutoCAD里的应用以及开发。2、平面设计里线元的完善:在平面设计里最基本的线形控制单元有三种:直线,圆曲线,缓和曲线。分别对这三种线元进行研究,特别是对缓和曲线的组合,精度以及偏转角的研究。3、建立基于图论的约束模型并求解:先分析线元模型的抽象图模型,导线法模型的抽象图模型,建立基于图论的统一约束模型。然后提出求解约束模型的算法,求解约束模型。1.4开发平台及主要的技术路线1.4.1采用的软件平台及开发工具软件平台:CAD软件AutoCAD2004、AutoCAD2006、AutoCAD2008,GIS软件AutoCADMAP2006、AutoCADMAP2005,专业软件CIVIL3D2006、CIVIL3D2005;开发工具:MicrosoftVisualStudio.NET2003,MicrosoftVisualStudio.NET20052002,AutoCAD二次开发包ObjectARX2002、2006、2008,SetupFactory7.0,ObjectDCL,Lisplink,VisualLisp;数据库平台:MicrosoftAccess2003。1.4.2论文采用的软件技术和开发工具介绍1、AutoCAD及AutoCADMap软件简介AutoCAD是美国Autodesk公司多年以来发展起来的旗舰产品,是目前世界上应用最广泛的CAD软件之一,绝大多数设计单位都在应用其进行设计,其图形数据格式也成了工程界图形数据存储与交换的标准。同时,该软件在图形处理上的强大功能及开放的二次开发平台使许多软件开发企业在其基础上进行了大量的二次开发工7
作。为了顺应信息技术,特别是地理信息系统(GIS)的发展,Autodesk公司也利用自身的CAD平台开发了面向地理信息系统的应用AutoCADMap,提供了地理信息系统的功能,但由于受AutoCAD图形特性的一些限制,其地理信息系统的功能较之其他专业的地理信息系统,如美国ESRI的ArcGIS、MapInfo等有一定的差距,但Autodesk公司正在不断完善中,其近年最新的产品Civil3D和LandDesktop以Map平台为基础,表现出了在土木工程领域强大的生命力。[13]2、AutoCAD-ObjectARX技术简介ObjectARX技术是AutoCAD的二次开发技术之一。ObjectARX应用程序是一个动态链接库(DLL),它共享AutoCAD的地址空间并直接调用AutoCAD的函数。ObjectARX程序设计环境,为开发者使用、定制和扩充AutoCAD,提供了一个面向对象的应用程序设计接口。ObjectARX库包含一系列多功能的工具,开发者利用AutoCAD的开放式体系结构,直接访问AutoCAD的数据库结构和图形系统,定义本地命令。ObjectARX从AutoCAD2000到目前最新发布的AutoCAD2006的每个CAD版本都有不同的版本相对应,并随AutoCAD同时发布,提供给开发者。从最初的只支持VisualC++到2005和2006版的支持VS.NET的所有组件:VB.NET、VC.NET、C#,为开发者提供了更广阔的选择空间,同时也向微软新一代的开发战略靠拢,顺应现代软件技术发展的潮流。3、AutoCADVBA技术简介AutoCADVBA也是AutoCAD的二次开发技术之一,AutoCAD在R14版之后都提供了VBA支持,是面向对象体系结构的一种编程语言。目前VBA代码在AutoCAD中以解释的方式执行,但它与AutoCAD完全共享内存空间,所以执行速度比用C语言开发的ADS程序还要快,同时它又是VB的子集,其语法结构十分简洁,便于掌握。与ObjectARX相比,语法结构简洁、便于掌握是其最大的优点,但由于它是VB的子集,其面向对象的程序设计方面还有很大的不足,如不支持派生和重载等。4、AutoCADActiveX技术概述8
ActiveX:一组允许软件组件与网络环境中的另一个组件交互,而不管创建组件所用语言的技术。AutoCADActiveX使用户能够从AutoCAD的内部或外部以编程方式来操作AutoCAD。它是通过将AutoCAD对象显示到“外部世界”来做到这一点的。这些对象被显示后,许多不同的编程语言和环境以及其他应用程序(例如Microsoft®WordVBA或ExcelVBA)就可以访问它们。图1-1ActiveX模型图在AutoCAD中实现ActiveX接口有两大优点:更多的编程环境可以编程访问AutoCAD图形。在ActiveXAutomation出现以前,开发人员只能使用AutoLISP或C++接口。与其他Windows应用程序(如MicrosoftExcel和Word)共享数据变得更加容易。对象是所有ActiveX应用程序的主要构造块。每一个显示的对象均精确代表一个AutoCAD组件。AutoCADActiveX接口中有许多不同类型的对象。例如:直线、圆弧、文字和标注等图形对象都是对象;线型与标注样式等样式设置都是对象;图层、编组和块等组织结构都是对象;视图与视口等图形显示都是对象;甚至图形、AutoCAD应用程序本身也是对象。5、Microsoft.NET技术简介.NET是微软为简化在第三代Internet的高分布式环境下的应用程序开发,基于开放互联网标准和协议之上,实现不同语言和不同平台高度交互性而建的新一代计算和通信平台。.NET支持多种语言的互操作,在一种语言下开发的组件可以在另一组件下通过9
面向对象的继承而得以重用,.NET通过将各语言先编译成中间语言(IntermediateLanguage,IL),然后在执行时用即时编译器编译成本地平台代码执行,从而实现跨平台使用。.NET的核心是.NET框架,它位于操作系统之上,为其他部件提供服务。它的主要组成部分有公共语言运行库和.NET框架类库及基础类库。ObjectARX提供了托管类使用户可以利用VB.NET和C#编写基于Microsoft.NET框架的应用程序。托管类实现了数据库功能使你可以读写DWG文件,同时也提供操作AutoCAD的用户界面元素的方法,这些元素包括命令行,对话框,AutoCAD编辑器,以及出版和绘图组件等。[13]ObjectARX托管类含两大程序集:●acdbmgd.dll动态链接库包含ObjectDBXAPIs;它随AutoCAD一起发售。●acmgd.dll动态链接库包含了大部分的AutoCADAPIs;它随AutoCAD一起发售。其内容详见ObjectARX文档。1.4.3主要的技术路线本文首先是通过对平面线元的研究,主要是圆弧和缓和曲线的研究,再建立统一的约束图模型和分析约束求解算法。然后对标准模板库、计算几何库、BGL库进行相应的研究与开发。结合这四个库,采用如上软件平台和开发工具,用泛型编程来实现平面设计软件的开发。10
2道路平面设计软件开发库的简介与开发2.1STL的基本组成2.1.1STL简介STL(StandardTemplateLibrary,标准模板库)是惠普实验室开发的一系列软件的统称。它是由AlexanderStepanov、MengLee和DavidRMusser在惠普实验室工作[14]时所开发出来的。STL标准模板库,又称泛型库,是一个使用模板技术实现的通用程序库,所提供的数据结构和算法具有泛化形式,不依赖于某个具体的C++数据类型,既体现了软件代码的可重用性,又保证代码具有相当的执行高效性,是一个具有工业强度的、高效的C++程序库。该库包含了诸多在计算机科学领域里所常用的数据结构和算法。为广大C++程序员们提供了一个可扩展的应用框架,高度体现了软件的可重用性。ANSI/ISO(美国国家标准/全球一致标准)的C++STL规范文本正式通过以后,各个C++编译器厂商就依照标准所描述的原型去实现C++STL泛型库,于是出现了多种符合标准接口,但具体实现代码不同的泛型库。目前流行的版本有:HPSTL、SGISTL、STLport、P.J.STL、RougeWaveSTL几种。[15]STL标准中的代码从广义上讲分为三类:algorithm(算法)、container(容器)和iterator(迭代器),几乎所有的代码都采用了模板类和模板函数的方式,这相比于传统的由函数和类组成的库来说提供了更好的代码重用机会。在C++标准中,STL被组织为下面的13个头文件:
、、、、、、