STL 在编程中的应用.doc
《STL 在编程中的应用.doc》由会员分享,可在线阅读,更多相关《STL 在编程中的应用.doc(6页珍藏版)》请在三一办公上搜索。
1、精品论文STL 在编程中的应用高庆,张能立 武汉理工大学计算机学院, 武汉(430073) E-mail: chanchanyuan摘要:STL 作为 C+标准的重要一部分,在很大程序上改变了 C+程序的结构与使用方式,STL 大大提高了软件开发的效率,降低了开发成本成维护成本,降低了开发时间与维护时间, 提高了软件稳定性与可移植性。随着软件行业的迅速发展, STL 在 C+程序中得到了广泛的 应用。本文讲述了 STL 的容器,迭代器,算法基本知识与基本理论, 使用方式, 并拿出几 个典型的容器,迭代器,算法进行讲述,并分析出特性及应注意的地方。为理解,使用 STL 作好了铺垫,最后举实例说明
2、了如何在编程中使用 STL 的容器,迭代器,算法进行程序设计 关键词:标准模板库, 容器,算法,迭代器中图分类号:TP3131 STL 简介STL(标准模板库)是一个可复用组件库,也是一个包算法与数据结构的软件框架. STL 在1994 年走入 C+标准,使得原本即将推出的 C+标准延迟 4 年问世, 由于 STL 包含很多高效 稳定的数据结构与算法, 所以在程序开发人员中得到了广泛的使用1.STL 的实现版本主要有五种,分别为 HP 实现版本,P.J.Plauger 实现版本,Rouge Wave 实现版本,STLport 实现版本,SGI STL 实现版本,它们所提供的功能一样,只是版权及
3、代码的 风格不同STL 主要分容器,算法, 迭代器三大块。容器与迭代器是以类的形式提供,容器类包含 很多数据结构及其上的操作.算法是一些常用的操作的集合,包含排序,查找,拷贝,数学 运算等. 迭代器是 STL 的关键部分,它在容器与算法之间起桥梁作用, 类似于 C 语言中的指 针, 但比指针复杂2 容器,算法,迭代器2.1 容器STL 的容器主要有两种分类方式, 一种是按容器的规范来分,可分为标准容器与非标准 容器.另一种可按照容器内部的存储特性来分,可分为序列式容器与关联式容器. 所以 STL 容器一般分为以下四类:标准 STL 序列容器:vector, string, deque 和 li
4、st. 标准 STL 关联容器:set, multiset, map 和 multimap. 非标准序列容器: slist 和 rope.非标准的关联容器 hash_set,hash_multiset. hash_map 和 hash_multimap.22.2 算法STL 的算法也主要有两种分类方式,一种是按是否改变容器中无素内容来分,可分为质 变算法与非质变算法.另一种是按操作的对象可分为数值算法,基本算法,set 相关算法,heap 算法, 常用操作算法. 下面以第三种分类法介绍 STL 的算法:数值算法有 accumute, adjacent_difference, inner_pro
5、duct, partial_sum, power, iota.- 6 -基本算法有 equal, fill, fill_n, iter_swap, lexicographical_compare, max, min, mismatch,swap, copy, copy_backward.Set 相关算法有 set_union, set_intersection, set_difference, set_symmetric_difference.Heap 算法有 make_heap, pop_heap, push_heap, sort_heap常用操作算法有 :adjacent_find, co
6、unt, count_if, find, find_if, find_end, find_first_of, for_each, generate, generate_n, includes, max_element, merge, min_element, partition, remove, remove_copy, remove_if, remove_copy_if, replace, replace_copy, replace_if, replace_copy_if, reverse, reverse_copy, rotate, rotate_copy, search, search_
7、n, swap_ranges, transform, unique, unique_copy, lower_bound, upper_bound, binary_search, next_permutation, prev_permutation,random_shuffle, partial_sort, partial_sort_copy.等2.3 迭代器迭代器是一种行为类似指针的对象, 而指针的各种行为中最常见也最重要的便是内容 提领和成员访问.因些迭代器重要编程工作就是对 operator*和 operator-进行重载工作迭代器的主要内容就是迭代器型别, 迭代器的型别有五种:value
8、 type, difference type, reference, iterator category.第一种型别 value type 表示迭代器所指类型的类型.第二种型别 Difference type 表示两个迭代器之间的距离的类型. 第三种型别 reference type 表示是否可改 变所指对象的内容.第四种类型表示所指之物的地址的类型.第五种类型表示迭代器的类型, 这个反映了迭代器的特性.13 STL 的应用3.1 STL 的常用方式STL 中全是模板的实现方式,所以使用时要特化, 指明类型. 对于一般层次的程序员来 说, 平时使用较多的是容器。容器也成为程序员的主要帮手。下面
9、介绍一下一些容器,迭代 器,算法的特性.3.1.1 vectorVector 容器就像 C 语言中的数组, 其元素存放在连续的空间里,但它的空间是可以动态 伸缩的,即随着元素的增加而增加.这一点上又不同于普通的数组.Vector 的的常用成员函数有 begin, end, size, capacity, empty, front, back, push_back , pop_back, erase, resize, clear, 这些含盖了 vector 的基本操作.Vector 支持随机存取,所以 vector 支持的是 random access iterator.就像数组在程序设计中的广
10、泛性一样,程序员在使用 STL 时,vector 容器也是程序员常 用的一种容器3.1.2 mapmap 是一种关联式容器.它是键值对的集合.map 类型通常可理解为关联数组:可使用 键作为下标来获取一个值, 正如内置数组类型一样.而关联的本质在于元素的值与某个特定 的键相关联, 而并非通过元素在数组中的位置来获取.3.map 的的特性是, 所有元素都会根据元素的键值自动被排序.map 的所有元素都是 pair, 同时拥有实值(value)和键值(key).pair 的第一元素被视为键值, 第二元素被视为实值.map 不 允许两个元素拥有相同的键值3.map 的常见操作有 key_comp,
11、value_comp, begin, end, rbegin, rend, empty, size, max_size,swap, insert, erase, clear, find, count, lower_bound, upper_bound, equal_range.因为 map 的每个元素都是一个键值对,所以可来存放更多的信息,且效率高,所以也是程序员常用的容器之一.3.1.3 iterator, const_iterator, reverse_iterator 以及 const_reverse_iteratorSTL 中的所有标准容器都提供了 4 种迭代器类型.对容器类 cont
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- STL 在编程中的应用 编程 中的 应用
链接地址:https://www.31ppt.com/p-5185955.html