C++之deque

From: http://blog.csdn.net/zxjzxj521/article/details/8172953

1 什么是STL

        STL就是C++ Standard Template Library,也就是标准模版库,是一个高效的C++程序库。STL包含六大组件:容器(container)、算法(algorithm)、迭代器(iterator)、配置器(allocator)、适配器(adapter)和函数对象(function object)。我们在学习这些组件时,应该按其重要程度来区别学习。重要成都由大到小是:泛型容器和泛型算法(表示任何类型和对象都可以使用这些容器和算法)>>迭代器>>配置器、适配器、函数对象。

        STL的主要头文件包括13个,分别是<algorithm>、<deque>、<functional>、<iterator>、<vector>、<list>、<map>、<numeric>、<memory>、<queue>、<set>、<stack>、<utility>,具体内容如表1所示。

表1 STL的主要头文件

头文件

内容

<deque>

deque的定义

<vector>

vector的定义

<list>

list的定义

<map>

map、multimap的定义

<set>

set、multiset的定义

<algorithm>

和<numeric>定义了STL的通用算法

<numeric>

和<algorithm>定义了STL的通用算法

<iterator>

所有在容器类型中定义的迭代器的祖先定义

<utility>

定义了pair,定义了基本的iterator

<memory>

主要是智能指针auto_ptr的定义和一些全局临时内存处理函数的定义;头文件包含了另一个重要头文件<xmemory>,主要是空间配置器allocator的定义

<queue>

queue、priority_queue的定义

<stack>

stack的定义

<functional>

通用函数对象的定义

 
        用概括性的语言来说,STL的各部分作用是:
    • 为了方便地存储数据,设计了容器;
    • 为了方便地遍历、查找、替换容器中的元素,设计了算法;
    • 为了方便地让容器、算法独立工作,设计了在二者之间起桥梁作用的迭代器;
    • 为了统一分配和控制容器中的内存,设计了配置器;
    • 为了更好地给算法传入参数,设计了函数对象;
    • 为了更好地扩展STL现有的接口,设计了适配器。

2 STL的历史       

        在STL的发展史中,总共产生了5个版本。
2.1 HP STL——第一个STL版本
        HP STL版本,就是惠普版本的STL库,是所有其他STL版本的鼻祖。其他版本的STL都是在此版本的基础上加以改进和实现的。
2.2 P.J. Plauger STL——Microsoft Visual C++的STL版本
        P.J. Plauger STL版本是由P.J. Plauger个人实现的,是HP STL版本的继承版本。Microsoft Visual C++中的STL库用的就是P.J. Plauger STL版本。P.J. Plauger STL版本不是开放源代码的,它的元代那是不能修改或销售的。
2.3 Rouge Wave STL——Borland C++ Builder5.0的STL版本
        Rouge Wave STL版本是由Rouge Wave公司开发的,也是HP STL版本的继承版本。该版本被Borland C++ Builder5.0所采用,可惜的是由于该版本长时间没有被更新过且它不完全符合STL标准,最后被弃用。
2.4 STLport——Borland C++ Builder6.0的STL版本
        STLport版本的STL最开始是俄罗斯人的一个开发项目,主要用途是把UNIX下的SGI STL代码一直到其他平台的主流编译器上,例如C++ Borland或Visual C++等。STLport版本的STL符合ANSI/C++的STL标准,因此也更容易移植。Borland C++ Builder6.0中的STL用的就是STLport版本。
2.5 SGI STL——GCC的STL版本
        SGI STL室友Silicon Graphics Computer System,Inc公司开发的,SGI STL同样也是HP STL版本的继承版本。Linux下的GCC编译器采用的正式SGI STL版本。GCC对C++语言标准的支持非常好,SGI STL在Linux平台上的性能非常出色。SGI STL是属于开发源代码的,因此读者可以修改和销售SGISTL版本。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/404815.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

STM32 设置片外SRAM分散加载

STM32F407 通过FSMC外挂一片SRAM 容量1MB&#xff0c; 设置应用程序的中的超大数组存放在外部SRAM。 &#xff08;1&#xff09;首先通过设置FSMC&#xff0c;保证正确挂接SRAM。 &#xff08;2&#xff09;MDK设置 &#xff08;3&#xff09;应用程序用__attribute__指定需要…

.NET4.0 之 Dynamic VS Refle“.NET研究”ction 效率

在我先前的文章中&#xff0c;不断的推广.NET4.0新特性。特别是.NET4.0 Dynamic 这个新特性。随之而来的问题也出现了—Dynamic 执行效率如何&#xff1f; 我们做开发的不光需要代码简洁&#xff0c;能够希望自己能够写出好的架构。还有一点非常重要的就是&#xff0c;我们的写…

[react] 经常用React,你知道React的核心思想是什么吗?

[react] 经常用React&#xff0c;你知道React的核心思想是什么吗&#xff1f; 一切皆组件 数据驱动视图 单向数据流 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌谣一起通关前端面试题

高性能I/O设计模式

http://blog.csdn.net/chexlong/article/details/22417079转载于:https://www.cnblogs.com/fight-tao/p/4925705.html

回调函数总结(个人见解)

回调函数总结(个人见解):1. 回调函数的实现 > 被调用者写2. 写库的人 > 调用回调函数的人 > 调用者2.1 调用者: 1) 不关心谁是被调用者2) 只关心回调函数的原型及返回值3) 声明回调函数的接口&#xff0c;回调函数的实现交给被调用者去处理2.2 被…

lwip+freeRTOS 无法ping通的解决方案

0、工程环境 STM32F407ZGT6LAN8720FreeRTOSlwIP 1、硬件 &#xff08;1&#xff09;确认PHY芯片RMII管脚是否配置正确&#xff1b; &#xff08;2&#xff09;PHY芯片初始化完成后&#xff0c;用HAL_ETH_ReadPHYRegister读一下寄存器0&#xff0c;1&#xff0c;2&#xff0c…

数据流图

数据流图(Data Flow Diagram&#xff0c;简称DFD)是一种图形化技术&#xff0c;它描绘信息流和数据从输入移动到输出的过程中所经历的变换&#xff0c;其既提供了功能建模机制也提供了信息建模机制。是结构化系统分析方法的主要表达工具及用于表示软件模型的一种图示方法。 它以…

[react] 你对immutable有了解吗?它有什么作用?

[react] 你对immutable有了解吗&#xff1f;它有什么作用&#xff1f; 让 react 的渲染符合预期&#xff0c;比如我们使用 ref 保留对象引用后&#xff0c;传递给子组件渲染&#xff0c;如果这是对象内的属性变更&#xff0c;不会触发子组件重新渲染&#xff0c;如果使用 immu…

lwip+freeRTOS 实现热插拔功能

1、lwip启用LWIP_NETIF_CALLBACK 宏&#xff0c;cubeMX会自动生成相关函数&#xff08;&#xff09;。 /* Set the link callback function, this function is called on change of link status*/netif_set_link_callback(&gnetif, ethernetif_update_config); 回调函数在v…

iOS设计模式 - 享元

iOS设计模式 - 享元 原理图 说明 享元模式使用共享物件&#xff0c;用来尽可能减少内存使用量以及分享资讯给尽可能多的相似物件&#xff1b;它适合用于只是因重复而导致使用无法令人接受的大量内存的大量物件。通常物件中的部分状态是可以分享。常见做法是把它们放在外部数据结…

C# 视频监控系列(11):H264播放器——封装API[HikPlayM4.dll]

前言 当你认真的写完客户端和服务器端的时候可能不需要再继续往下看关于播放器的代码和说明&#xff0c;因为你已经掌握了如何转换VC代码的技巧了&#xff0c;加上GOOGLE再来完成这个播放器应该算小菜了。但是作为我的系列&#xff0c;我还是有必要认真的将这部分写完才算完整&…

[react] React16废弃了哪些生命周期?为什么?

[react] React16废弃了哪些生命周期&#xff1f;为什么&#xff1f; React16废弃的生命周期有3个will&#xff1a; componentWillMount componentWillReceiveProps componentWillUpdate 废弃的原因&#xff0c;是在React16的Fiber架构中&#xff0c;调和过程会多次执行will周…

lwip+freeRTOS 故障容错 客户端主动发起连接

1、简单的需求 STM32终端为tcp客户端&#xff0c;主动向TCP服务器发起连接&#xff0c;然后进行通信。 流程&#xff1a;STM32网卡初始化-----lwIP初始化--------DHCP-------------creat socket Client-------send-------recv 2、实际情况 &#xff08;1&#xff09;如何处…

JS正则表达式大全【转】

正则表达式中的特殊字符 字符 含意 \ 做为转意&#xff0c;即通常在"\"后面的字符不按原来意义解释&#xff0c;如/b/匹配字符"b"&#xff0c;当b前面加了反斜杆后/\b/&#xff0c;转意为匹配一个单词的边界。 -或- 对正则表达式功能字符的还原&#xff0c…

C++回调函数用法

From: http://blog.csdn.net/wubin1124/article/details/4386269 一回调函数 我们经常在C设计时通过使用回调函数可以使有些应用&#xff08;如定时器事件回调处理、用回调函数记录某操作进度等&#xff09;变得非常方便和符合逻辑&#xff0c;那么它的内在机制如何呢&#x…

[react] 举例说明什么是高阶组件(HOC)的属性代理

[react] 举例说明什么是高阶组件(HOC)的属性代理 function HOC(WrappedComponent) {return class HOC extends Component {render() {const newProps { type: HOC };return <div><WrappedComponent {...this.props} {...newProps} /></div>}} }hoc class O…

树莓派使用STEP8:使能串口调试

1、打开SD卡根目录"config.txt"文件&#xff0c;文末增加dtoverlaypi3-miniuart-bt并且保存 &#xff1b; 2、修改根目录"cmdline.txt"&#xff0c;清空原内容&#xff0c;增加 dwc_otg.lpm_enable0 consoletty1 consoleserial0,115200 root/dev/mmcblk0p…

【C++模板】特化与偏特化 template [partial] specialization

1 template specialization 模板特化 一般情况下类模板定义如下&#xff1a; template<class Window, class Controller> class Widget {... 泛化实现代码 ... };特化是指把类模板中指定的class T变成具体的类型&#xff1a;class Widget<ModalDialog, MyController&g…

正则表达式匹配中文字符串的文章URL

http://www.cnblogs.com/yitian/archive/2008/11/14/1333569.html转载于:https://www.cnblogs.com/llcdbk/p/4932172.html

[react] React中你有使用过getDefaultProps吗?它有什么作用?

[react] React中你有使用过getDefaultProps吗&#xff1f;它有什么作用&#xff1f; createReactClass 参数对象内的一个方法&#xff0c;用于初始化组件属性 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一起讨论 主…