云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > STL预习总结

STL预习总结

  • 62 次阅读
  • 3 次下载
  • 2026/1/11 13:44:49

STL预习报告

一 STL背景:

众所周知,c语言是一种面向过程的高级语言(Procedure-Oriented),它把做一件事情的过程抽象出procdure(function),过程和功能,将事物的方法隐藏于函数中。因为函数之间相对独立,所以有“强内聚,低耦合”的特点,c语言对小程序即项目非常高效,但随着项目越来越大,程序越写越多,单纯用c语言实现代码量太大,重复代码过多,效率就低了。 为了解决这个问题,c++应运而生,它可以将事物抽象出数据类型,将属性和方法和数据类型抽象结合一起,用这个抽象的类解决实际问题就方便多了,由此派生出来的类的继承和多态,实现了一个接口,多种功能的实现。

但对于大型甚至超大型的项目来说,这还不够,STL提供了复杂数据类型以及算法的封装,使用这些接口,使开发人员更高效方便的处理项目。

二 STL及容器简介

STL(standard templte Library) 即标准模板库,是泛型编程的基础,由六大部分组成:

这六部分最重要的容器和算法,其中迭代器为容器的接口, 容器是一种形象的说法,其实是将一些数据结构做成API接口,方便开发人员调用,开发人员同样可以在其中做一些数据管理,容器其实是用c++中的模板类来实现的。

容器分为序列容器和关联容器,序列容器中每个元素都有固定位置,元素插入取决于时机和地点,和元素值无关,关联式容器中元素位置取决于特定的排序推测,和插入顺序无关。

三 序列式容器

包括 vector, deque, list

Vector(本质为一个可以动态增加和减少空间的动态数组)其特点:

1.可以使用下标访问个别的元素 2.迭代器可以按照不同的方式遍历容器

3.可以在容器的末尾增加或删除元素

和数组相比,虽然容器在自动处理容量的大小时会消耗更多的内存,但是容器能提供和数组一样的性能,而且能很好的调整存储空间大小和其他标准的顺序容器相比(deques or lists),能更有效访问容器内的元素和在末尾添加和删除元素,在其他位置添加和删除元素,vector则不及其他顺序容器,在迭代器和引用也不比lists支持的好

List(本质为双向链表)的特点:

1. 不使用连续的内存空间这样可以随意地进行动态操作。

2.可以在内部任何位置快速地插入或删除,当然也可以在两端进行push 和pop。

3. 不能进行内部的随机访问,即不支持[ ] 操作符和vector.at()。

4.相对于verctor 占用更多的内存。

list是一个线性双向链表结构,它的数据由若干个节点构成,每一个节点都包括一个信息块(即实际存储的数据)、一个前驱指针和一个后驱指针。它无需分配指定的内存大小且可以任意伸缩,这是因为它存储

搜索更多关于: STL预习总结 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

STL预习报告 一 STL背景: 众所周知,c语言是一种面向过程的高级语言(Procedure-Oriented),它把做一件事情的过程抽象出procdure(function),过程和功能,将事物的方法隐藏于函数中。因为函数之间相对独立,所以有“强内聚,低耦合”的特点,c语言对小程序即项目非常高效,但随着项目越来越大,程序越写越多,单纯用c语言实现代码量太大,重复代码过多,效率就低了。 为了解决这个问题,c++应运而生,它可以将事物抽象出数据类型,将属性和方法和数据类型抽象结合一起,用这个抽象的类解决实际问题就方便多了,由此派生出来的类的继承和多态,实现了一个接口,多种功能的实现。 但对于大型甚至超大型的项目来说,这还不够,STL提供了复杂数据类型以及算法的封装,使用这些接口,使开发人员更高效方便的处理项目。

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com