c++_stl 教程ACM培训教程.ppt

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

sf C++ STL ACM/ICPC2007暑期培训 主要内容 STL:组件、容器、iterator STL容器:vector(向量),list,stack,queue STL算法:搜寻、排序、拷贝、数值运算 STL STL是C++标准程序库的核心,深刻影响了标准程序库的整体结构 STL是泛型(generic)程序库,利用先进、高效的算法来管理数据 STL由一些可适应不同需求的集合类(collection class),以及在这些数据集合上操作的算法(algorithm)构成 STL内的所有组件都由模板(template)构成,其元素可以是任意类型 STL STL组件 容器(Container) - 管理某类对象的集合 迭代器(Iterator) - 在对象集合上进行遍历 算法(Algorithm) - 处理集合内的元素 STL STL容器类别 序列式容器-排列次序取决于插入时机和位置 关联式容器-排列顺序取决于特定准则 STL STL容器的共通能力 所有容器中存放的都是值而非引用,即容器进行安插操作时内部实施的是拷贝操作。因此容器的每个元素必须能够被拷贝。如果希望存放的不是副本,容器元素只能是指针。 所有元素都形成一个次序(order),可以按相同的次序一次或多次遍历每个元素 各项操作并非绝对安全,调用者必须确保传给操作函数的参数符合需求,否则会导致未定义的行为 STL STL容器元素的条件 必须能够通过拷贝构造函数进行复制 必须可以通过赋值运算符完成赋值操作 必须可以通过析构函数完称销毁动作 序列式容器元素的默认构造函数必须可用 某些动作必须定义operator ==,例如搜寻操作 关联式容器必须定义出排序准则,默认情况是重载operator STL STL容器的共通操作 初始化(initialization) 产生一个空容器 以另一个容器元素为初值完成初始化 以数组元素为初值完成初始化 STL STL容器的共通操作 与大小相关的操作(size operator) size()-返回当前容器的元素数量 empty()-判断容器是否为空 max_size()-返回容器能容纳的最大元素数量 比较(comparison) ==,!=,,=,,= 比较操作两端的容器必须属于同一类型 如果两个容器内的所有元素按序相等,那么这两个容器相等 采用字典式顺序判断某个容器是否小于另一个容器 赋值(assignment)和交换(swap) swap用于提高赋值操作效率 STL 容器的共通操作 与迭代器(iterator)相关的操作 begin()-返回一个迭代器,指向第一个元素 end()-返回一个迭代器,指向最后一个元素之后 rbegin()-返回一个逆向迭代器,指向逆向遍历的第一个元素 rend()-返回一个逆向迭代器,指向逆向遍历的最后一个元素之后 元素操作 insert(pos,e)-将e的拷贝安插于pos处 erase(beg,end)-移除[beg,end]区间内的所有元素 clear()-移除所有元素 STL 迭代器(iterator) 可遍历STL容器内全部或部分元素的对象 指出容器中的一个特定位置 迭代器的基本操作 STL 迭代器(iterator) 所有容器都提供获得迭代器的函数 STL 迭代器(iterator) 所有容器都提供两种迭代器 container::iterator以“读/写”模式遍历元素 container::const_iterator以“只读”模式遍历元素 迭代器示例:iterator STL 迭代器(iterator) 迭代器分类 双向迭代器 可以双向行进,以递增运算前进或以递减运算后退。 list、set和map提供双向迭代器 随机存取迭代器 除了具备双向迭代器的所有属性,还具备随机访问能力。 可以对迭代器增加或减少一个偏移量、处理迭代器之间的距离或者使用和之类的关系运算符比较两个迭代器。 vector、deque和string提供随机存取迭代器 STL容器 vector vector模拟动态数组 vector的元素可以是任意类型T,但必须具备赋值和拷贝能力(具有public拷贝构造函数和重载的赋值操作符) 必须包含的头文件#include vector vector支持随机存取 vector的大小(size)和容量(capacity)通常是不同的,capacity返回vector实际能容纳的元素数量。如果超过这个数量需要重新配置内部存储器。 STL容器 vector 构造、拷贝和析构 STL容器 vector 非变动操作 STL容器 vector 赋值操作 STL容器 vector 元素存取 STL容器 vector 迭代器相关函数 STL容器 vector

文档评论(0)

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

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

1亿VIP精品文档

相关文档