STL架构.doc

  1. 1、本文档共3页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
STL架构

STL架构 STL主要包含了容器,算法,迭代器,仿函数,适配器,分配器 1.C++新特性: 模板 typename 内置类型的显示初始化 int value = int(); 异常处理 try{ } catch{ } 命名空间:解决命名冲突问题,与class的比较 bool类型(true false被引入C++) 关键字explicit:用以限制隐式转换,用作构造函数时限制隐式初始化 新类型转换操作符: static_casttypename:强制类型转换 dynamic_casttypename:用于多态型别转换 const_casttypename:用于const类型的去除和设置 reinterpret_casttypename:用于位解析转换 常数静态成员:类声明时赋值Class MyClass{static const int cValue = 100} 通用工具: Pairs:用于map和multimap容易中的元素,快捷函数make_pair(key ,value) 智能指针auto_ptr: 用智能指针创建对象:std::auto_ptrClassA ptr(new ClassA) 智能指针的拥有权:赋值时转移(原指针被赋值为NULL,目标指针对象释放) 禁止使用值传递的方式把智能指针传入调用函数 用const修饰智能指针有助于防范被转移权限 数值极限 辅助函数:max,min,swap 容器 容器主要分成顺序容器和关联容器,附近功能的还有容器配接器 顺序容器: 动态数组Vector 动态数组支持随机访问,所以访问速度很快.(因为物理上是连续的) 支持快速尾部插入元素.但插入元素有可能导致所有关联迭代器失效.(因为插入可能导致vector的在内存上的重新部署) 可能设置容器的最大容量等 双向队列Deque 跟Vector基本一致,不过不提供容器容量的接口,支持头部快速插入.如果在中间插入元素时候,会导致整个Deque失效,迭代器是随机访问迭代器 链表List 物理上不连续,逻辑上连续.不支持随机访问,只支持双向访问 在结构任何地方都可以快速插入删除元素,且不会导致其他迭代器失效 字符串String 数组Array 关联容器(插入,删除代价均为logN,访问也为logN) 顺序集合Set 可重复顺序集合MultiSet Set内部元素为一个值对象,根据某个特定的标准排序. 其内部结构是一颗平衡2叉树(BST),根据前序遍历来访问元素顺序 不能直接修改其元素,所以最好使用const版迭代器来访问(用删除和插入代替修改) 映射表Map 可重复映射表MultiMap Map元素是一个pair结构体,包含键值对,其中键值不能被直接修改 ???部是用红黑树实现的,从迭代器来看,内部有序 支持下标值访问,类似PHP的数组一样 容器适配器(把一个容器的接口封装成适应特定行为的容器) 栈Stacks 队列 Queue 优先级队列Priority Queue 迭代器 不同的迭代器具备不同的能力,而算法也需要不同能力的迭代器,因此,迭代器可分为5中级别(类型) 输入迭代器: (单向)只能从容器中读出数据,如果把输入流作为容器,可以把数据从输入流读到程序中 输出迭代器: (单向)只能把数据写入到容器中,如果把输出流作为容器,可以把数据从程序写入输出流中 前进迭代器: 具备输入和输出大部分功能:能读能写,单向前进 双向迭代器: 随机访问迭代器: 迭代器辅助函数: advance(iter1, steps)可以让迭代器前进指定步数(要求至少为双向迭代器) distance(iter1,iter2)返回两个迭代器之间的乘员数,如果不是随机访问迭代器,则iter1必须在iter2后面 iter_swap(iter1,iter2)交换迭代器所指向的内容 迭代器配接器: 逆向迭代器:(改变迭代器行为,区间倒置,++,--重载) 插入迭代器:(改变迭代器覆盖的行为,变成插入) 流迭代器:(把迭代器的操作重定向到指定的流对象里面) 仿函数 #includefunctional预定义仿函数和仿函数适配器安放文件 定义 :所谓仿函数,就是定义了operator()的对象 仿函数可以作为排序准则(STL部分算法需要缺省排序准则) 可以拥有内部状态 for_each的返回值是仿函数 比判别式(返回bool)高效 仿函数的适配器: bind2nd:将一个2元仿函数变成1元仿函数 bind1st,not1,not2等 可以通过men_fun_ref(op)或者men_fun来指定调用对象的成员函数 算法 #includealgorithm 算法分类 非变动性算法: count(c.begin, c.end, value) min_element(c

文档评论(0)

jgx3536 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:6111134150000003

1亿VIP精品文档

相关文档