首页 《C++Primer》第09章学习笔记

《C++Primer》第09章学习笔记

举报
开通vip

《C++Primer》第09章学习笔记《C++Primer》第09章学习笔记第09章:容器与算法@学习摘录072:顺序容器——将单一类型元素聚集起来成为容器,然后根据位置来存储和访问这些元素,这就是顺序容器。——vector支持快速随机访问——list支持快速插入/删除——deque双端队列@学习摘录073:顺序容器适配器——适配器是根据原始的容器类型所提供的操作,通过定义新的操作接口,来适应基础的容器类型。——stack后进先出(LIFO)栈——queue先进先出(FIFO)队列——priority_queue有优先级管理的队列第一节:顺序容器的定义...

《C++Primer》第09章学习笔记
《C++Primer》第09章学习笔记第09章:容器与算法@学习摘录072:顺序容器——将单一类型元素聚集起来成为容器,然后根据位置来存储和访问这些元素,这就是顺序容器。——vector支持快速随机访问——list支持快速插入/删除——deque双端队列@学习摘录073:顺序容器适配器——适配器是根据原始的容器类型所提供的操作,通过定义新的操作接口,来适应基础的容器类型。——stack后进先出(LIFO)栈——queue先进先出(FIFO)队列——priority_queue有优先级管理的队列第一节:顺序容器的定义(初始化)@学习摘录074:新建一个容器初始化为另一个容器的副本——vectorivec;——vectorivec2(ivec);//ok,ivecisvector——listilist(ivec);//error:ivecisnotlist——vectordvec(ivec);//error:ivecholdsintnowdouble——将一个容器复制给另一个容器时,类型必须匹配:容器类型和元素类型都必须相同。摘录有想074:——这也就是说,容器复制的时候,只需考虑的是容器类型和元素类型,并不需要考虑原容器中的元素数量了,以前曾经想过这个问 快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题 。也会想一个问题,在定义新容器的时候,会不会出现溢出的情况呢?@学习摘录075:初始化为一段元素的副本——系统允许通过传递一对迭代器间接实现该功能。使用迭代器时,不要求容器类型相同,容器内的元素类型也可以不相同,只要它们相互兼容能进行转换即可。——//initializeslistwithcopyofeachelementofsvec——listslist(svec.begin(),svec.end());——//findmidpointinthevector——vector::iteratormid=svec.begin()+svec.size()/2;——//initializefrontwithfirsthalfofsvec:Theelementsuptobutnoteinclude*mid——dequefront(svec.begin(),mid);——//initializebackwithsecondhalfofsvec:Theelements*midthroughendofsvec——dequeback(mid,svec.end());摘录有想075:——利用迭代器复制相当的方便,减少了很多限制,还可以不同类型的复制,只是也要考虑到一个方面,稳定性,如果需要隐式转换的地方还是少用的好。一段段的复制挺好的。同时,注意考虑它的区间是左闭右开的区间来的。@学习摘录076:容器内元素的类型约束——元素类型必须支持赋值运算。——元素类型的对象必须可复制。摘录有想076:——这个问题,虽然不常发生,int型之类的内置类型不用考虑这个问题,而一些自己定义的类类型的话,真的得注意了。@学习摘录077:容器的容器——定义容器的容器时,有一个问题必须得注意的:——vector>lines;//ok:spacerequiredbetweencblose>——vector>lines;//error:>>treatedasshiftoperator——必须用空格隔开两个相邻的>符号,以示这是两个分开的符号。——否则,系统会认为>>是单个符号,为右移操作符,并结果导致编译时的错误。摘录有想077:——网上的帖子看过很多人出现这个错,经典错误啊,就一个空格之差,让人看得纠结,写程序时,细节决定成败。第二节:迭代器和迭代器范围@学习摘录078:迭代器范围——C++语言使用一对迭代器标记迭代器范围,这两个迭代器分别指向同一个容器中的两个元素或超出末端的下一位置。——通常,这两个迭代器命名为first和last,或beg和end,用于标记容器中的一段元素范围。——该范围内的元素包括迭代器first指向的元素,以及从first开始一直到迭代器last指向的位置之前的所有元素。——此类元素范围称“左闭合区间(left-inclusiveinterval) 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 达式:[first,last]摘录有想078:——要记得啊,常常出现的字眼“超出末端的下一位置”。这一 知识点 高中化学知识点免费下载体育概论知识点下载名人传知识点免费下载线性代数知识点汇总下载高中化学知识点免费下载 ,记住左闭区间是关键。@学习摘录079:使用左闭合区间的编程意义——左闭合区间有两个方便使用的性质,得记住:——1.当first与last相等时,迭代器范围为空;——2.当first与last不相等时,迭代器范围内至少有一个元素,而first指向该区间的第一个元素。——while(first!=last)——{//safetouse*firstbecauseweknowthereisatleastoneelement——++first;——}摘录有想079:——我想:左闭合区间的使用,总的来说可以概括为三个字吧“安全性”。第三节:顺序容器的操作——每种顺序容器都提供了一组有用的类型定义以及以下操作:——1.在容器中添加元素——2.在容器中删除元素——3.设置容器的大小——4.(如果有的话)获取容器内的第一个和最后一个元素。@学习摘录080:在顺序容器中添加元素——在容器中添加元素时,系统是将元素值复制到容器里。摘录有想080:——这令我想到了指针,使用指针,改变的是值,而地址不变。这个原理吧。@学习摘录081:在容器中的指定位置添加元素——看代码后,你懂的!s.insert(迭代器,插入的东西);新元素是插入在迭代器指向的位置之前。返回指向新添加元素的迭代器。——s.insert(iter,element);//insertelementjustbeforeiter摘录有想081:——考虑到有一种特例:push_back和push_front可以相当于iter为s.begin()和s.end()时。@学习摘录082:插入一段元素——看代码后,你懂的!迭代器插入位置加上迭代器的前后位置构成的左闭合区间。——stringsarray[4]={“quasi”,“samba”,“frollo”,“scar”};——//insertalltheelementinsarrayatendofslist——slist.insert(slist.end(),sarray,sarray+4);@学习摘录083:关系操作符(比较大小)——/*——ivec1:1357912——ivec2:024681012——ivec3:139——ivec4:1357——ivec5:1357912——*/——//ivec1andivec2differatelement[0]:ivec1greaterthanivec2——//ivec1svec1(10);//vectorwith10elements——vectorsvec2(24);//vectorwith24elements——svec1.swap(svec2);——执行swap后,容器svec1中存储24个string类型的元素,而svec2则存储10个元素。——关于swap的一个重要问题:——1.该操作不会删除或插入任何元素;——2.保证在常量时间内实现交换。——3.由于容器内没有移动任何元素,因此迭代器不会失效。摘录有想087:——对此表示疑惑,为什么没有移动元素就没失效?它的原理是?猜测可能是变了变量的地址,其它一切无发生改变。第四节:vector容器的自增长@学习摘录088:vector的增长效率——为了使vector容器实现快速的内存分配,其实际分配的容量要比当前所需的空间多一些。——vector容器预留了这些额外的存储区,用于存放新添加的元素。——于是,不必为每个新元素重新分配容器。——所分配的额外内存容量的确切数目因库的实现不同而不同。——比起每添加一个新元素就必须重新分配一次容器,这个分配策略带来显著的效率。——事实上,其性能非常好,因此在实际应用中,比起list和deque容器,vector的增长效率通常会更高。@学习摘录089:capacity成员——弄清capacity(容量)与size(长度)的区别非常重要。——size指容器当前拥有的元素个数;——而capacity则指容器在必须分配新存储空间之前可以存储的元素总数。——vectorivec;——//sizeshouldbezero;capacityisimplementationdefined——cout<<“ivec:size:“<::size_typeix=0;ix!=24;++x)——ivec.push_back(ix);——//sizeshouldbe24;capacitywillbe>=24andisimplementationdefined——cout<<“ivec:size:“< 标准 excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载 。——2.find操作可以分为查找属于args的字符和不属于args的字符。
本文档为【《C++Primer》第09章学习笔记】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
个人认证用户
白学芝
热爱爱问
格式:pdf
大小:270KB
软件:PDF阅读器
页数:6
分类:
上传时间:2023-03-18
浏览量:1