南川网站建设,淘宝c2c模式,网站开发要做什么,网站设计需要考虑的基本原则1.STL简介
1.1.STL的概念
STL(standard template libaray即#xff1a;“标准模板库”)是C标准库的重要组成部分#xff0c;不仅是一个可复用的组件库#xff0c;而且是一个包罗数据结构与算法的软件框架。
1.2.STL的版本 原始版本#xff1a;Alexander Stepanov、Meng …1.STL简介
1.1.STL的概念
STL(standard template libaray即“标准模板库”)是C标准库的重要组成部分不仅是一个可复用的组件库而且是一个包罗数据结构与算法的软件框架。
1.2.STL的版本 原始版本Alexander Stepanov、Meng Lee两人在惠普实验室完成了STL的原始版本本着开源精神他们声明允许任何人任意运用、拷贝、修改、传播、商业使用这些代码无需付费。唯一的条件就是也需要向原始版本一样做开源使用。原始版本也叫HP版本是所有STL实现版本的始祖。 P.J.版本由P.J.Plauger开发继承自HP版本被Windows Visual C采用不能公开或修改。缺陷是可读性比较低符号命名比较怪异。 RW版本由Rouge Wage公司开发继承自HP版本被C Builder采用不能公开或修改可读性一般该编译器后来被微软的VS打败已经没落。 SGI版本由Silicon Graphics Computer SystemsInc公司开发继承自HP版本。被GCC(Linux)采用可移植性好可公开、修改甚至贩卖从命名风格和编程风格上看阅读性非常高。后面学习STL要阅读部分源代码主要参考的就是这个版本。
2.STL的六大组件
STL可以划分为六个组件 #mermaid-svg-JsF1naynK4CVxYoF {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-JsF1naynK4CVxYoF .error-icon{fill:#552222;}#mermaid-svg-JsF1naynK4CVxYoF .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-JsF1naynK4CVxYoF .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-JsF1naynK4CVxYoF .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-JsF1naynK4CVxYoF .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-JsF1naynK4CVxYoF .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-JsF1naynK4CVxYoF .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-JsF1naynK4CVxYoF .marker{fill:#333333;stroke:#333333;}#mermaid-svg-JsF1naynK4CVxYoF .marker.cross{stroke:#333333;}#mermaid-svg-JsF1naynK4CVxYoF svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-JsF1naynK4CVxYoF .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-JsF1naynK4CVxYoF .cluster-label text{fill:#333;}#mermaid-svg-JsF1naynK4CVxYoF .cluster-label span{color:#333;}#mermaid-svg-JsF1naynK4CVxYoF .label text,#mermaid-svg-JsF1naynK4CVxYoF span{fill:#333;color:#333;}#mermaid-svg-JsF1naynK4CVxYoF .node rect,#mermaid-svg-JsF1naynK4CVxYoF .node circle,#mermaid-svg-JsF1naynK4CVxYoF .node ellipse,#mermaid-svg-JsF1naynK4CVxYoF .node polygon,#mermaid-svg-JsF1naynK4CVxYoF .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-JsF1naynK4CVxYoF .node .label{text-align:center;}#mermaid-svg-JsF1naynK4CVxYoF .node.clickable{cursor:pointer;}#mermaid-svg-JsF1naynK4CVxYoF .arrowheadPath{fill:#333333;}#mermaid-svg-JsF1naynK4CVxYoF .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-JsF1naynK4CVxYoF .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-JsF1naynK4CVxYoF .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-JsF1naynK4CVxYoF .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-JsF1naynK4CVxYoF .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-JsF1naynK4CVxYoF .cluster text{fill:#333;}#mermaid-svg-JsF1naynK4CVxYoF .cluster span{color:#333;}#mermaid-svg-JsF1naynK4CVxYoF div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-JsF1naynK4CVxYoF :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} STL组成 空间配置器 容器 配接器 迭代器 算法 仿函数 补充“容器”实际上就是“数据结构”。 3.STL的学习境界 能熟用STL语法 明白STL的底层原理 能够根据需求来自主拓展、扩充STL
4.STL的缺陷 更新速度这里值得吐槽的是STL的更新速度比较靠谱的上一版本是C98C03是一些基本修订13年后C11才推出STL才得以进一步更新。 线程安全STL到现在都没有支持线程安全并发环境下需要自己加锁而且锁的粒度比较大。 过于效率STL太追求效率了导致内部比较复杂例如类型萃取、迭代器萃取等。 代码膨胀STL的使用会有代码膨胀的问题这是模板语法本身导致的。