- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
sf C++ Standard Template Library Introduction STL简介 STL(Standard Template Library)是C++标准程序库的核心 STL是泛型(generic)程序库,由一些可适应不同需求的集合类(collection class),以及在这些数据集合上操作的算法(algorithm)构成 STL内的所有组件都由模板(template)构成,其元素可以是任意类型 STL主要包括六大组件 容器 算法 迭代器 仿函数 配接器 内存配置器 组件关系 STL基础组件关系 容器(Container) - 管理某类对象的集合 迭代器(Iterator) - 在对象集合上进行遍历 算法(Algorithm) - 处理集合内的元素 容器提供迭代器,算法使用迭代器,通过迭代器操作容器 里的元素。迭代器使得容器和算法相互独立。 容器的概念 容器用来存储数据 容器的分类 序列式容器(Sequence containers) 每个元素都有固定位置--取决于插入时机和地点,和元素值无关。 vector、deque、list 关联式容器(Associated containers) 元素没有固定位置,每个元素位置取决于容器自己特定 的排序规则,与键值有关,与插入顺序无关。 set、multiset、map、multimap 其它容器 Hash_set, has_map, bitset,stack, queue, valarray等等 序列容器 Vector 动态数组,支持随机存取,动态插入、删除。随意位置插入删除元素效率低,尾部插入删除效率高。 List 双向链表。不支持随机存取,任意位置插入和删除元素效率高。 Deque 双端队列,类似vector。但是支持高效的在首部插入和删除元素。 关联容器 Set(multiset) 底层实现通常基于平衡二叉树 不支持直接存取元素 通过迭代器进行元素间接存取 Multiset与set用法基本一致,但允许出现相同值的元素 Map(multimap) Map是一种特殊的set, 元素都是pairkey, value) Map提供了下标subscript操作能力,可以像数组一样操作[key]来引用相应的值。 Multimap跟map具有相同功能,但允许重复的键值。 其他容器 Hash_set/hash_multiset及Hash_map/hash_multimap 内部用hash表实现,标准set/map用平衡二叉树实现 Key不是排序,标准set/map的key是排序的 Bitset, stack, queue等 迭代器 迭代器(iterator) 可遍历STL容器内全部或部分元素的对象 指出容器中的一个特定位置 迭代器的基本操作,类似普通指针的操作 迭代器 迭代器(iterator) 所有容器都提供获得迭代器的函数 迭代器 STL算法 STL提供了一些标准算法来处理容器内的元素 搜寻、排序、拷贝、数值运算等等 STL的算法是与容器相互独立 明确划分数据和操作 泛型函数式编程模式 算法通过迭代器作用于容器中的元素 STL算法 区间(range) 所有算法都用来处理一个或多个区间内的元素。 区间可以但不一定涵盖容器内所有元素 为了操作元素的某个子集必须将区间的首尾(iterator)当作两个参数传递给算法 调用者必须确保区间有效性 从起点出发,逐一前进,能够到达终点。 区间首尾两个迭代器必须属于同一容器,且前后放置正确 无效区间可能会引起无限循环或者内存非法访问 所有算法处理的都是半开区间[begin, end) STL算法 STL算法分类 非变动性算法(nonmodifying algorithms) 变动性算法(modifying algorithms) 移除性算法(removing algorithms) 变序性算法(mutating algorithms) 排序性算法(sorting algorithms) 已序区间算法(sorted range algorithms) 数值算法(numeric algorithms) STL算法 非变动性算法 既不改变元素次序也不改变元素值 STL算法 变动性算法 直接改变元素值或者在复制到另一区间的过程中改变元素值 STL算法 移除性算法 移除某区间内的元素或者在复制过程中移除元素值 STL算法 变序性算法 通过元素的赋值和交换改变元素顺序 STL算法 排序算法 需要动用随机存取迭代器 STL算法 已序区间算法 所作用的区间以按某种准则排序 STL算法 数值算法 以不同的方式组合数值元素 参考资料 一个Joke 某
原创力文档


文档评论(0)