设为首页 加入收藏

TOP

C++标准库和标准模板库介绍(三)
2018-04-25 06:06:00 】 浏览:378
Tags:标准 模板 介绍
bYuLTXxdK70KnOqsHLyrXP1s/ywb+hosG0se21yL3hubm2+LHg0LS1xLT6wuujrNXi0Km0+sLrtrzKrrfWz+DLxqOs1rvKx86qwcvKytOmsrvNrMr9vt21xLHku6+2+NTaz7i92snP09DL+bP2yOuho1NUTMjdxve+zc6qztLDx8zhuanBy9Xi0fm1xLe9seOjrMv81MrQ7c7Sw8fW2Li0wPvTw9LR09C1xMq1z9a5udTs19S8urXEzNi2qMDg0M3PwrXEyv2+3b3hubmjrM2ouf3J6NbD0rvQqcSjsObA4KOsU1RMyN3G97bU1+6zo9PDtcTK/b7dveG5uczhuanBy9ans9ajrNXi0KnEo7DltcSyzsr91MrQ7c7Sw8fWuLaoyN3G99bQ1KrL2LXEyv2+3cDg0M2jrL/J0tS9q87Sw8fQ7bbg1ti4tLb4t6bOtrXEuaTX97zyu6+hozwvcD4NCjxwPsjdxveyv7fW1vfSqtPJzbfOxLz+PHZlY3Rvcj4sPGxpc3Q+LDxkZXF1ZT4sPHNldD4sPG1hcD4sPHN0YWNrPrrNPHF1ZXVlPtfps8mho7bU09qzo9PDtcTSu9CpyN3G97rNyN3G98rKxeTG96Oov8nS1L+01/fTycbky/zI3cb3yrXP1rXEyN3G96Opo6y/ydLUzai5/c/Cse3X3L3h0rvPwsv8w8e6zc/g06bNt87EvP61xLbU06a52M+1oaM8L3F1ZXVlPjwvc3RhY2s+PC9tYXA+PC9zZXQ+PC9kZXF1ZT48L2xpc3Q+PC92ZWN0b3I+PC9wPg0KPHRhYmxlIGJvcmRlcj0="1" cellpadding="0" cellspacing="0">

数据结构

描述

实现头文件

向量(vector)

连续存储的元素

列表(list)

由节点组成的双向链表,每个结点包含着一个元素

双队列(deque)

连续存储的指向不同元素的指针所组成的数组

集合(set)

由节点组成的红黑树,每个节点都包含着一个元素,节点之间以某种作用于元素对的谓词排列,没有两个不同的元素能够拥有相同的次序

多重集合(multiset)

允许存在两个次序相等的元素的集合

栈(stack)

后进先出的值的排列

队列(queue)

先进先出的执的排列

优先队列(priority_queue)

元素的次序是由作用于所存储的值对上的某种谓词决定的的一种队列

映射(map)

由{键,值}对组成的集合,以某种作用于键对上的谓词排列

多重映射(multimap)

允许键对有相等的次序的映射

3、迭代器

迭代器从作用上来说是最基本的部分,可是理解起来比前两者都要费力一些。软件设计有一个基本原则,所有的问题都可以通过引进一个间接层来简化,这种简化在STL中就是用迭代器来完成的。概括来说,迭代器在STL中用来将算法和容器联系起来,起着一种黏和剂的作用。几乎STL提供的所有算法都是通过迭代器存取元素序列进行工作的,每一个容器都定义了其本身所专有的迭代器,用以存取容器中的元素。

迭代器部分主要由头文件 , 组成。 是一个很小的头文件,它包括了贯穿使用在STL中的几个模板的声明, 中提供了迭代器使用的许多方法,而对于 的描述则十分的困难,它以不同寻常的方式为容器中的元素分配存储空间,同时也为某些算法执行期间产生的临时对象提供机制, 中的主要部分是模板类allocator,它负责产生所有容器中的默认分配器。

三、后记

对于STL的使用,也普遍存在着两种观点。第一种认为STL的最大作用在于充当经典的数据结构和算法教材,因为它的源代码涉及了许多具体实现方面的问题。第二种则认为STL的初衷乃是为了简化设计,避免重复劳动,提高编程效率,因此应该是“应用至上”的,对于源代码则不必深究。对于初学者而言,通过分析源代码,提高对其应用的理解其意义也不同凡响。

曾经想着设计几个上机题目,让同学们体会一下利用STL编程。写出一个适合初学者的,规模又不能太大,还要有足够引导的题目,实在是一件非常费时费力的事,加上有其他事还得应急,就将此帐欠下,日后再说。要给同学们提的建议是,不少C++的经典教材对STL都有非常好的讲解,可以选一本去读。在读书时,要开始学着挑着读,跳着读,不必从头到尾,逐页去读。在这个阶段,可以首先学习迭代器utility、在C++编程中建议替代数组的vector,以及实现双向链表的list。vector和list与本周任务1和任务2似乎有些相关。再者,发扬我们一贯特别能实践的精神,及时找些题目或者自编题目进行实践。 

首页 上一页 1 2 3 下一页 尾页 3/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇C++ 添加动态链接库及静态链接库.. 下一篇深度剖析c++单继承与多继承

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目