容器学习笔记.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
容器学习笔记

容器学习笔记(C++Primer4) 1.标准库定义了三种顺序容器类型:vector,list 和 deque(双端队列); 2.标准库还提供了三种容器适配器:stack,queue 和 priority_queue (优先队列); 3.vector 支持快速随机访问 ,list 支持快速插入/删除,deque 双端队列 ; 4.容器适配器:stack后进先出(LIFO)堆栈,queue 先进先出(FIFO)队列, priority_queue 有优先级管理的队列; 5.所有的容器都是类模板;要定义具体的容器,必须在容器名后加一对尖括号, 尖括号里面提供容器中存放的元素的类型; 6.所有容器类型都定义了默认构造函数,用于创建指定类型的空容器对象: CT c; 创建一个名为 c 的空容器;C 是容器类型名,如 vector,T 是元素 类型,如 int 或 string 适用于所有容器; C c(c2); 创建容器 c2 的副本 c;c 和 c2 必须具有相同的容器类型,并存放 相同类型的元素;适用于所有容器; C c(b,e); 创建 c,其元素是迭代器 b 和 e 标示的范围内元素的副本;不要求 容器类型相同,也不要求元素类型相同,只要兼容即可转换为所构建新容器 的元素类型;适用于所有容器; C c(n, t); 用 n 个值为 t 的元素创建容器 c,其中值 t 必须是容器类型 C 的 元素类型的值,或者是可转换为该类型的值;只适用于顺序容器 C c(n); 创建有 n 个值初始化(第 3.3.1 节)(value-initialized)元素 的容器 c;只适用于顺序容器 7.容器内元素的类型约束 a) 元素类型必须支持赋值运算;b)元素类型的对象 必须可以复制; c) 关联容器的键类型还需满足其他的约束 8.a)除了引用类型外,所有内置或复合类型都可用做元素类型;引用不支持 一般意义的赋值运算,因此没有元素是引用类型的容器; b)容器本身也满足上述要求,因此,可以定义元素本身就是容器类型的容器; c)IO 库类型不支持复制或赋值;因此,不能创建存放 IO 类型对象的容器; 9.如果容器存储类类型的对象,那么只有当其元素类型提供默认构造 函数时,容器才能使用这种构造函数; 例如:假设类 Foo 没有默认构造函数,但提供了需要一个 int 型形参的 构造函数。现在,考虑下面的声明: vectorFoo empty; // ok: no need for element default constructor vectorFoo bad(10); // error: no default constructor for Foo vectorFoo ok(10, 1); // ok: each element initialized to 1 10.容器的迭代器与迭代器范围 a)顺序容器迭代器提供简单的解引用;自增,自减(算术)及相等,不等(逻辑)运算 b)vector 和 deque 容器的迭代器提供额外的运算 vectorint::iterator iter = vec.begin() + vec.size()/2; c)list 容器的迭代器既不支持算术运算(加法或减法),也不支持关系运算 ilist.begin() + ilist.size()/2; // error: 11.C++ 使用一对迭代器标记迭代器范围(iterator range),这两个迭代 器分别指向同一个容器中的两个元素或超出末端的下一位置(左闭合区间) 12.迭代器供运算是使用标准库算法的基础; 13.迭代器范围这个概念是标准库的基础 a)第二个迭代器从来都不是指向元素范围的最后一个元素, 而是指向最后一 个元素的下一位置; b)使用迭代器编写程序时,必须留意哪些操作会使迭代器失效; 使用无效迭代器将会导致严重的运行时错误; 14.每种顺序容器都提供了一组有用的类型定义以及以下操作: a) 在容器中添加元素; b) 在容器中删除元素; c)设置容器大小; d) (如果有的话)获取容器内的第一个和最后一个元素; 15.可以用插入操作在容器任意位置添加元素: c.inser(p,t)/c.insert(p,n,t)/c.insert(p,b,e) 16.list容器不支持下标操作 所有顺序容器都支持 push_back 操作 list 和 deque 容器类型还提供了类似的操作:push_front 17.添加元素可能会使迭代器失效 vectorint::iterator first = v.begin(),

文档评论(0)

yan698698 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档